这是我的问题: CORS被设置为应该在S3上:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
当我尝试获取文件时(使用带有选项CrossDomain = true的jQuery)
来自 A.example.com - &gt; B.example.com/file.js (使用正确的标头) 当我从另一个域尝试相同的请求时: C.dev.example.com - &gt; B.example.com/file.js //(失败)
然而,对于第二个例子,当我查看chrome中的网络日志时 我的第一个请求 OPTIONS :
它有正确的CORS响应标头:
access-control-allow-headers: access-control-allow-headers
access-control-allow-methods: GET
access-control-allow-origin: *
access-control-max-age: 3000
content-length: 0
date: Mon, 26 Mar 2018 14:38:36 GMT
server: AmazonS3
status: 200
vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
via: 1.1 f19281f08e79aa6c6634266c50732dd5.cloudfront.net (CloudFront)
x-amz-cf-id: S2aMKSsJspB9p2RVxLMNh49iQ3Rc0Uims-EEIcjbxC42_OpqJpoUXQ==
x-cache: Miss from cloudfront
然而 GET 请求(在OPTIONS之后):
accept-ranges: bytes
content-length: 817
content-type: application/javascript
date: Mon, 26 Mar 2018 14:19:46 GMT
etag: "5b85d498318db8095a776fdcae57c624"
last-modified: Mon, 26 Mar 2018 14:19:20 GMT
server: AmazonS3
status: 200
via: 1.1 f19281f08e79aa6c6634266c50732dd5.cloudfront.net (CloudFront)
x-amz-cf-id: C0xswS08mXDHkagm3phQT59wjclwEX9ZZHXr57OpZVMHzkf432H7dg==
x-cache: RefreshHit from cloudfront
我在Cloudfront上的TTL是5秒(它必须对我的用例具有攻击性) 我使用的是 h2 协议,而不是 http / 1.1
答案 0 :(得分:2)
我的问题是由于一个已知的问题,因为CloudFront并没有发送&#39; Vary:Origin&#39;响应中的标头,因此响应将由触发错误的浏览器缓存。
更多详细信息:https://forums.aws.amazon.com/thread.jspa?threadID=156134 此处还有更多详细信息:https://serverfault.com/questions/856904/chrome-s3-cloudfront-no-access-control-allow-origin-header-on-initial-xhr-req/856948#856948