Chrome 中 CDN 后面的 woff2 字体的 CORS 问题
CORS Issue with woff2 fonts behind CDN in Chrome
我有一个带有 Cloudfront CDN 的 S3 存储桶。在那个桶中,我有一些自动标记为内容类型 octet-stream
的 woff2 字体。尝试从实时制作网站上的 CSS 文件加载该字体时,出现以下错误:
Access to Font at 'https://cdn.example.com/fonts/my-font.woff2' from origin
'https://www.live-website.com' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://www.live-website.com' is therefore not allowed access.
问题是卷曲显示 Access-Control-Allow-Origin
存在:
HTTP/1.1 200 OK
Content-Type: binary/octet-stream
Content-Length: 98488
Connection: keep-alive
Date: Wed, 08 Aug 2018 19:43:01 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Last-Modified: Mon, 14 Aug 2017 14:57:06 GMT
ETag: "<redacted>"
Accept-Ranges: bytes
Server: AmazonS3
Age: 84847
X-Cache: Hit from cloudfront
Via: 1.1 <redacted>
X-Amz-Cf-Id: <redacted>
在 Firefox 中一切正常,所以我猜想 Chrome 正在执行额外的验证以阻止我的字体。
原来问题出在 Content-Type
上。一旦我将内容类型更改为 application/font-woff2
并使这些 woff2
文件的缓存无效,一切就顺利进行了。
我在 CORS 和多域方面的问题是 Cloudfront 正在缓存第一个请求,所以我不得不 select 在白名单 Headers 中选择 Origin 选项。它有效。
enter image description here
我有一个带有 Cloudfront CDN 的 S3 存储桶。在那个桶中,我有一些自动标记为内容类型 octet-stream
的 woff2 字体。尝试从实时制作网站上的 CSS 文件加载该字体时,出现以下错误:
Access to Font at 'https://cdn.example.com/fonts/my-font.woff2' from origin
'https://www.live-website.com' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://www.live-website.com' is therefore not allowed access.
问题是卷曲显示 Access-Control-Allow-Origin
存在:
HTTP/1.1 200 OK
Content-Type: binary/octet-stream
Content-Length: 98488
Connection: keep-alive
Date: Wed, 08 Aug 2018 19:43:01 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Last-Modified: Mon, 14 Aug 2017 14:57:06 GMT
ETag: "<redacted>"
Accept-Ranges: bytes
Server: AmazonS3
Age: 84847
X-Cache: Hit from cloudfront
Via: 1.1 <redacted>
X-Amz-Cf-Id: <redacted>
在 Firefox 中一切正常,所以我猜想 Chrome 正在执行额外的验证以阻止我的字体。
原来问题出在 Content-Type
上。一旦我将内容类型更改为 application/font-woff2
并使这些 woff2
文件的缓存无效,一切就顺利进行了。
我在 CORS 和多域方面的问题是 Cloudfront 正在缓存第一个请求,所以我不得不 select 在白名单 Headers 中选择 Origin 选项。它有效。 enter image description here