2012-09-17 59 views
3

我正在使用HTML5 CORS文件上传器上的Amazon S3。它运作良好,但我仍然有一件很奇怪的事情正在发生。允许在Amazon S3上使用OPTIONS HTTP方法

之前PUT请求发送文件时,浏览器总是发送OPTIONS要求,从而未能与403 FORBIDDEN错误代码。

但该文件被正确传输到S3所以发生了什么?

请注意,我试图让所有的HTTP方法来解决我的问题,但它没有工作..

这里的头,我使用了PUT请求

AWSAccessKeyId:XXXXXXXXXXXXXXXXXXXXXX 
Expires:1347882643 
Signature:YYYYYYYYYYYYYYYYYYYYY 

还有一些代码的东西:

var xhr = new XMLHttpRequest(); 
// bind the event listener 
xhr.upload.addEventListener("progress", progress_listener, false); 
// open the XMLHttpRequest 
xhr.open('PUT', signed_url, true); 

// when the upload is completed call the callback function if supplied 
xhr.onload = function(e) { 
    if(typeof callback == "function") { 
     callback(this.status == 200, file.name, file_id); 
     confirm_upload_success(file_id); 
    } 
}; 

// start sending 
xhr.send(file); 

感谢您的帮助

+1

您是否正确设置了CORS? http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors。html – Evert

+0

当然,但Amazon S3不允许您将OPTIONS放入允许的HTTP方法中 –

回答

3

编辑:此bug已被修正亚马逊:-)

卡尔@ AWS/2012年9月28日下午2时56分:

所有,

此错误应该现在被修复,使用CORS的预先签名的URL将会成功。

感谢,


您所描述的问题是一个亚马逊的错误:原来,S3目前正在验证选项呼叫是在“预检”做出了CORS和失败(可能是因为auth已经使用PUT请求进行签名,而不是OPTION请求)。

它已经在他们的雷达,你可以在这里看到:CORS works with public data, but fails to work with pre-signed request

卡尔@ AWS/2012年9月5日下午1:00:

谢谢你,和大家一样,对于报告。你是正确的, 预先签名的请求返回初始OPTIONS请求的错误。 我们正在研究这个问题,并希望很快添加此支持。我 没有时间表的变化的可用性,但我会 更新此线程与更多信息,当我有。如果你有 任何后续问题让我知道。

所以,只要忽略它,他们就会修复它。

+0

感谢您的帮助! –

+1

现在已经修复。 – philfreo

相关问题