Javascript AWS S3 bucket上载上的CORS错误
我的AWS S3 bucket CORS配置设置如下Javascript AWS S3 bucket上载上的CORS错误,javascript,node.js,amazon-web-services,amazon-s3,cors,Javascript,Node.js,Amazon Web Services,Amazon S3,Cors,我的AWS S3 bucket CORS配置设置如下 <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedOrigin>h
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedOrigin>http://localhost:5000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
但chrome和firefox都抛出了一个访问控制Allow Origin header not set错误。特别是在firefox中:“(原因:CORS标头“Access Control Allow Origin”丢失)。”Access Control Allow标头不允许使用通配符。它必须包含实际的头名称
查看网络选项卡中的飞行前请求。
Access Control request Headers
header中的值必须包含为AllowedHeader
您必须从服务器上传,而不是从我所了解的CORS客户端上传。从我读过的文章中,您可以直接上传到S3 bucket。我在服务器上运行node,所以希望避免传递上传…你是对的,尽管我只使用了角度模块(我现在记得了)。我的错。正如OliverJ90所提到的,我直接上传到一个存储桶没有问题。正如克里斯托弗·马歇尔(Christopher Marshall)所说,“本地主机”是CORS的有效来源吗?这似乎有点毫无意义,如果不是,我也不会感到惊讶。您可以尝试使用http://lvh.me:5000/
这是一个测试域,解析为127.0.0.1,就像localhost
,同时看起来是一个真实的域名,看看它是否能让浏览器更快乐。你确定吗<代码>*
function upload_file(file, signed_request, url){
var xhr = new XMLHttpRequest();
xhr.open("PUT", signed_request);
xhr.setRequestHeader('x-amz-acl', 'public-read');
xhr.onload = function() {
if (xhr.status === 200) {
$('#photo').css('background-image', "url('"+url+"')");
}
};
xhr.onerror = function(err) {
alert("Could not upload file.", err);
};
xhr.send(file);
}