字体

时间:2016-02-01 15:40:32

标签: http-headers cross-domain amazon-cloudfront

我有一个CloudFront发行版,可以阻止Chrome(桌面版)中的字体下载,但会出现以下错误:

  

来自“https://....cloudfront.net”的字体已被屏蔽   通过跨源资源共享策略加载:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“https://example.com”   访问。

我应该在哪里设置此Access-Control-Allow-Origin标头?

我尝试在can分发的“Origin”部分添加标题,但它不会产生任何影响。

enter image description here

编辑#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上的标题列入白名单,以便它不会阻止它:

enter image description here

1 个答案:

答案 0 :(得分:2)

这很难追踪,因为标题的规则设置在2个不同的位置而不是一个。

为正确类型的文件修复正确的标题确实完成了这项工作,但你必须考虑这样的事实:在某些地方试图覆盖NGINX规则不起作用它只考虑第一条规则。

可在此处https://stackoverflow.com/a/10636765/1168944

找到标题的全面说明