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


跨域资源共享策略已阻止源Q4312079q的字体加载
:否
'Access-Control-Allow-Origin标头出现在所请求的
资源上。因此,不允许访问原始http://skin.cdn.com


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

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


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

非常感谢

#1 楼

更改网站根目录上的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将被允许加载您的CDN,将其称为您的传递资源(字体)。

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

评论


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

– amgraham
15年7月7日在19:17

此方法仍然有效。

–拉胡尔
17年2月24日在13:19

我想我们永远不会知道

–丹尼
20-04-22在13:32

#2 楼

我没有足够的声誉来评论@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。