我有一个CloudFront发行版,可以阻止Chrome(桌面版)中的字体下载,但会出现以下错误:
来自“https://....cloudfront.net”的字体已被屏蔽 通过跨源资源共享策略加载:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“https://example.com” 访问。
我应该在哪里设置此Access-Control-Allow-Origin标头?
我尝试在can分发的“Origin”部分添加标题,但它不会产生任何影响。
编辑#1:
源上的Nginx配置有以下指令:
location ~ \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}
在此测试中curl -I https://example.com/skin/frontend/smartwave/default/megamenu/css/fonts/fontawesome-webfont.woff
重新回复失败的回应:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Feb 2016 17:53:39 GMT
Content-Type: application/font-woff
Content-Length: 44432
Last-Modified: Wed, 13 May 2015 15:58:11 GMT
Connection: keep-alive
ETag: "55537493-ad90"
Pragma: public
Cache-Control: max-age=31536000, public, must-revalidate, proxy-revalidate
Accept-Ranges: bytes
从我在此处看到的标题Access-Control-Allow-Origin
丢失了。
此外,我将CloudFront上的标题列入白名单,以便它不会阻止它:
答案 0 :(得分:2)
这很难追踪,因为标题的规则设置在2个不同的位置而不是一个。
为正确类型的文件修复正确的标题确实完成了这项工作,但你必须考虑这样的事实:在某些地方试图覆盖NGINX规则不起作用。 它只考虑第一条规则。
找到标题的全面说明