加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:09:03 所属栏目:百科 来源:网络整理
导读:这个问题带给我一点坚果。我试图通过AJAX POST将文件上传到S3存储区。 我有所有的凭据正确,因为当我做正常的HTTP POSTs它创建的资源在S3桶只是罚款。但是我真的想使用进度条一次上传多个文件,因此我需要AJAX。 我的S3桶上有CORS设置: ?xml version="1.0"
这个问题带给我一点坚果。我试图通过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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读