使用file-saver下载AWS S3 / EC2中的文件时出现CORS错误

0

【以下的问题经过翻译处理】 我正在使用AWS 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> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>\*</AllowedHeader> </CORSRule> </CORSConfiguration> 当我尝试使用Javascript库File-Saver下载保存在我的EC2实例上的文件时,我会得到以下错误: 跨域资源共享(CORS)策略将来自源“S3-Bucket”的XMLHttpRequest“EC2-Instance”的访问阻止:请求资源不包含“Access-Control-Allow-Origin”的响应头

导致File-Saver错误的代码为:

function d(a) { var b = new XMLHttpRequest(); return b.open("HEAD", a, !1), b.send(), 200 <= b.status && 299 >= b.status; <-- 这一行代码 }

当我使用详细模式模拟请求时,我收到以下信息:

< Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD < Access-Control-Max-Age: 3000 < Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method

不知道为什么我仍然会得到这个错误?

编辑:

我尝试了以下请求以查看头信息:

curl -H "Access-Control-Request-Method: GET" -H "Origin: S3 Bucket" --head -IXHEAD EC2_Instance

由于某种原因,我没有CORS信息,收到以下信息:

HTTP/1.1 200 OK Server: nginx/1.15.8 Date: Sun, 24 Feb 2019 04:38:20 GMT Content-Type: application/octet-stream Content-Length: 6950

profile picture
专家
已提问 5 个月前17 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果像这样使用通配符 <AllowedOrigin>* </AllowedOrigin>,S3将不会发送'Access-Control-Allow-Origin'头部。为了让S3发送AllowedOrigin头部并从任意网站加载您的内容,请尝试这样做: <AllowedOrigin>http://</AllowedOrigin> <AllowedOrigin>https://</AllowedOrigin> 我认为其中一个会奏效..!

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则