跨源资源共享策略阻止字体加载:否'Access-Control-Allow-Origin'


16

我们在Google Chrome浏览器中遇到此错误。我们认为一切设置正确。但是也许不是吗?

http://skin.cdn.com跨域资源共享策略阻止了源字体的加载:在请求的资源上不存在“ Access-Control-Allow-Origin”标头。http://domain2.com因此,不允许访问原点。

htaccess中有以下内容(在域的根目录中)。

<IfModule mod_headers.c>    
Header add Access-Control-Allow-Origin "http://skin.cdn.com" 
</IfModule>

问题:我是否忘记了其他设置?

非常感谢

Answers:


17

更改网站根目录上的htaccess文件代码(即您的public_html“ .htaccess”文件)

<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "http://skin.cdn.com"
    </IfModule>
</FilesMatch>

现在,您的CDN将被允许加载您的资源,将它们称为您的传递资源(字体)。

CAVEAT:您需要在CDN中清除所有内容,以便在几分钟内更新文件。


1
您的回答对我来说是完美无缺的,但是我可以问为什么您选择通配符而不是选择将其限制为特定来源吗?
amgraham

此方法仍然有效。
拉胡尔

0

我没有足够的声誉来评论@Prashant Tapase的答案,但是您的根目录不是Your Public_html。这是您的根目录的子目录。和我一直在研究的答案中,FileMatch指令应位于IfModule内部,如下所示

<IfModule mod_headers.c>
    <FilesMatch "\.(eot|otf|ttc|ttf|woff|woff2)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

如果这是错误的,请纠正我。
或者,您可以像他提到的那样指定字体的特定URL / URI。

另外,如果是CDN,则应尽可能使用https版本而不是http。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.