【以下的问题经过翻译处理】 我正在使用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