S3:否';访问控制允许原点';对于AJAX POST
这个问题让我有点发疯。我正试图通过AJAX POST将文件上传到S3存储桶中 我所有的凭证都是正确的,因为当我进行正常的HTTP发布时,它会在S3 bucket中创建资源。但是我真的很想用进度条一次上传多个文件,因此我需要AJAX 我在S3存储桶上设置了CORS:S3:否';访问控制允许原点';对于AJAX POST,ajax,amazon-s3,cors,jquery-file-upload,Ajax,Amazon S3,Cors,Jquery File Upload,这个问题让我有点发疯。我正试图通过AJAX POST将文件上传到S3存储桶中 我所有的凭证都是正确的,因为当我进行正常的HTTP发布时,它会在S3 bucket中创建资源。但是我真的很想用进度条一次上传多个文件,因此我需要AJAX 我在S3存储桶上设置了CORS: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
http://localhost:3000
得到
邮递
*
现在我只是想让它在我的开发环境中工作(localhost:3000,使用标准Rails 4.1)
根据我的理解,上述CORS规则应该允许从localhost:3000到S3 bucket的AJAX请求
但是,每次通过AJAX提交文件时,都会出现以下错误:
XMLHttpRequest cannot load https://s3.amazonaws.com/<BUCKET>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
XMLHttpRequest无法加载https://s3.amazonaws.com/. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:3000因此,不允许访问。
这对我来说没有任何意义,因为localhost:3000通过CORS规则被授予访问权限
我还提供了一个我用来提交表单的JS片段:
$.ajax({
method: "POST",
crossDomain: true,
url: "https://s3.amazonaws.com/<BUCKET>",
data: $(this).serialize() # Contains S3 necessary values
})
$.ajax({
方法:“张贴”,
跨域:是的,
url:“https://s3.amazonaws.com/",
数据:$(this).serialize()包含S3必需的值
})
表单中有必要的Amazon S3键/etc输入。我知道它们可以工作,因为当我进行正常的HTTP发布时,它会在S3中正确地创建资产。我所要做的就是把这个过程简化
我是不是漏掉了什么明显的东西
使用:Rails 4.1、jquery文件上传、fog gem(用于S3)您可以通过更改
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
*
得到
3000
授权
您的问题似乎与我遇到的一个问题非常相似,这个问题也没有得到正确(准确)的回答,似乎是一个与浏览器限制有关的问题,而不是它背后的实际传输技术
这是我最初的问题和我在这里收到的答案的链接,所以:
希望这能让您了解您的问题,而不仅仅是噪音。您是否验证了
POST
发送的是Origin
标题?似乎有些浏览器可能不会,因为它们将localhost
视为不同的安全级别。我已经检查过了。我正在使用Chome的开发工具,它说它正在提交一个源代码:http://localhost:3000
在请求中。它确实有一个注释,上面写着注意:显示临时标题
。我还没有查到这个问题,但我想我也需要排除这个问题。你找到解决办法了吗?@klchoi:我已经一年没有接触到这个问题了,但我相信亚马逊推出了一些更新,通过允许直接发布到他们的桶中解决了我的问题。我不再参与那个项目了,所以我无法核实。很抱歉,我无法提供更多的见解。