![为什么 CloudFront 不返回 Access-Control-Allow-Origin?](https://linux22.com/image/718415/%E4%B8%BA%E4%BB%80%E4%B9%88%20CloudFront%20%E4%B8%8D%E8%BF%94%E5%9B%9E%20Access-Control-Allow-Origin%EF%BC%9F.png)
我试图弄清楚为什么 cloudfront 分发不通过 access-control-allow-origin 缓存/发送。
当我 curl 我的网站上时:
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 07:42:01 GMT
Content-Type: application/font-woff2
Content-Length: 77160
Connection: keep-alive
Set-Cookie: __cfduid=dda822a428a2dddb9113bbd425dba93e91520062921; expires=Sun, 03-Mar-19 07:42:01 GMT; path=/; domain=.flexrc.com; HttpOnly
Last-Modified: Fri, 02 Mar 2018 03:01:32 GMT
ETag: "5a98be8c-12d68"
Access-Control-Allow-Origin: *
CF-Cache-Status: HIT
Expires: Sat, 03 Mar 2018 11:42:01 GMT
Cache-Control: public, max-age=14400
Accept-Ranges: bytes
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 3f5a76ca7ddd3b50-YVR
但是当我卷曲cloudfront文件时:
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Length: 66624
Connection: keep-alive
Date: Sat, 03 Mar 2018 03:13:25 GMT
Last-Modified: Sun, 21 Feb 2016 22:02:50 GMT
ETag: "56ca340a-10440"
CF-Cache-Status: HIT
Expires: Sat, 03 Mar 2018 07:13:25 GMT
Cache-Control: public, max-age=14400
Accept-Ranges: bytes
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 3f58ed5738b09668-SJC
X-Cache: RefreshHit from cloudfront
Via: 1.1 f42a8d19b16850af801ce5662fc9fdab.cloudfront.net (CloudFront)
X-Amz-Cf-Id: HBJgB_UBz1pKdUQf-08bsZDXGE3Cv9GD6X9e3aUx_R8ejPdlQxGD8g==
在“编辑行为”为了“根据选定的请求标头进行缓存”我已经添加了白Origin
名单Access-Control-Allow-Origin
我也多次使对象无效,同时我正在等待分发进度完成。
我不使用S3。
我也检查过了在 Cloudfront 上设置 Access-Control-Allow-Origin
但它对我没有帮助。
任何建议都值得感激。
答案1
尝试在重新测试之前清除 Cloudfront 缓存 - 整个响应都已缓存,包括标头。我猜发生了什么:
- CF 的 ACAO 已关闭
- 对 CF 进行 curl - 将响应拉入缓存,无需 ACAO
- 设置已更改为启用 ACAO
- 已提出请求 - CF 中出现 HIT,因此未反映设置更改。
因此,如果您清除缓存并重试,您将获得使用正确标头生成的新缓存对象。