Rails 5.2 Active Storage直接上传失败:缺少CORS标题“Access-Control-Allow-Origin”

时间:2018-03-20 13:22:45

标签: amazon-s3 rails-activestorage ruby-on-rails-5.2

我正在试用Rail 5.2.0.rc1 Active Storage,使用其包含的JavaScript库将PDF文档直接从客户端上传到云端。 但是在提交表单时,我在Firefox和Linux中都遇到了浏览器错误。 Chrome:

Cross-Origin Request Blocked... (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

在activestorage.js中设置了标题,因此this.xhr.setRequestHeader ...并且似乎不可配置:https://github.com/rails/rails/blob/master/activestorage/app/javascript/activestorage/blob_record.js

有人建议吗?

1 个答案:

答案 0 :(得分:7)

尝试使用以下内容在S3存储桶上设置CORS权限:

<?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>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>