使用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
EXPERTE
gefragt vor 5 Monaten19 Aufrufe
1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen