S3:AJAX POST没有“访问控制允许源”

前端之家收集整理的这篇文章主要介绍了S3:AJAX POST没有“访问控制允许源”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题带给我一点坚果。我试图通过AJAX POST将文件上传到S3存储区。

我有所有的凭据正确,因为当我做正常的HTTP POSTs它创建的资源在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>

现在我只是试图让它在我的开发环境(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.

这对我来说没有任何意义,因为localhost:3000被授予通过CORS规则的访问权限。

我还提供了我用来提交表单的JS代码片段:

$.ajax({
    method: "POST",crossDomain: true,url: "https://s3.amazonaws.com/<BUCKET>",data: $(this).serialize() # Contains S3 necessary values
  })

该表单有必要的Amazon S3键/ etc输入。我知道他们工作,因为当我正常的HTTP POSTs它在S3中正确创建资产。所有我想要做的是AJAXify的过程。

我在这里缺少一些明显的东西吗?

使用:Rails 4.1,jquery-file-upload,fog gem(for 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>

猜你在找的Ajax相关文章