这个问题让我有点疯狂.我正在尝试通过AJAX POST将文件上传到S3存储桶.
我的所有凭据都是正确的,因为当我执行正常的HTTP POST时,它会在S3存储桶中创建资源.但我真的想用进度条一次上传多个文件,因此我需要AJAX.
我的S3存储桶上有CORS设置:
http://localhost:3000 GET POST *
现在我只是想在我的开发环境中使用它(localhost:3000,使用标准的Rails 4.1).
根据我的理解,上面的CORS规则应该允许从localhost:3000到S3存储桶的AJAX请求.
但是,每次我通过AJAX提交文件时,都会收到以下错误:
XMLHttpRequest cannot load https://s3.amazonaws.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
这对我没有任何意义,因为localhost:3000 IS通过CORS规则被授予访问权限.
我还提供了一个我用来提交表单的JS片段:
$.ajax({ method: "POST", crossDomain: true, url: "https://s3.amazonaws.com/", data: $(this).serialize() # Contains S3 necessary values })
表单包含必要的Amazon S3密钥/ etc的输入.我知道它们有效,因为当我执行正常的HTTP POST时,它会在S3中正确创建资产.我所要做的就是AJAXify这个过程.
我错过了一些明显的东西吗?
使用:Rails 4.1,jquery-file-upload,雾宝石(适用于S3)