Dan*_*n L 16 ajax amazon-s3 cors jquery-file-upload
这个问题让我有点疯狂.我正在尝试通过AJAX POST将文件上传到S3存储桶.
我的所有凭据都是正确的,因为当我执行正常的HTTP POST时,它会在S3存储桶中创建资源.但我真的想用进度条一次上传多个文件,因此我需要AJAX.
我的S3存储桶上有CORS设置:
<?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>
Run Code Online (Sandbox Code Playgroud)
现在我只是想在我的开发环境中使用它(localhost:3000,使用标准的Rails 4.1).
根据我的理解,上面的CORS规则应该允许从localhost:3000到S3存储桶的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.
Run Code Online (Sandbox Code Playgroud)
这对我没有任何意义,因为localhost:3000 IS通过CORS规则被授予访问权限.
我还提供了一个我用来提交表单的JS片段:
$.ajax({
method: "POST",
crossDomain: true,
url: "https://s3.amazonaws.com/<BUCKET>",
data: $(this).serialize() # Contains S3 necessary values
})
Run Code Online (Sandbox Code Playgroud)
表单包含必要的Amazon S3密钥/ etc的输入.我知道它们有效,因为当我执行正常的HTTP POST时,它会在S3中正确创建资产.我所要做的就是AJAXify这个过程.
我错过了一些明显的东西吗?
使用:Rails 4.1,jquery-file-upload,雾宝石(适用于S3)
小智 1
你可以尝试改变
<?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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3228 次 |
| 最近记录: |