我的子字段中有我的字体,例如static.example.com
今天,字体不在Chrome中显示,也在Firefox中显示 - 并且此错误在开发工具中出现:CORS问题请求的资源上没有“Access-Control-Allow-Origin”标头
«来自原始字体'http://static.example.com'的字体已被阻止被跨源资源共享策略加载:在请求的资源上没有'Access-Control-Allow-Origin'标头。因此,原产地“http://example.com”是不允许访问»
我已经有子域中的.htaccess
文件
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With"
Header set Access-Control-Allow-Methods "GET, PUT, POST"
</FilesMatch>
</IfModule>
而且这个代码,如果我尝试curl -I http://static.example.com/fonts/pfcentrosanspro-reg-webfont.eot
在终端,我得到这样的响应:。
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 27 Aug 2014 17:20:50 GMT
Content-Type: font/eot
Content-Length: 26403
Connection: keep-alive
X-Accel-Version: 0.01
Last-Modified: Mon, 05 Aug 2013 17:49:42 GMT
Accept-Ranges: bytes
Cache-Control: max-age=31536000
Expires: Thu, 27 Aug 2015 17:20:50 GMT
X-Powered-By: PleskLin
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With
Access-Control-Allow-Methods: GET, PUT, POST
但是错误仍然存在,我已将字体移至Amazon S3 CDN中的存储桶中并使用以下代码:
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
没有运气,错误仍然存在 - 字体无法加载,CORS错误显示 - 我甚至修改了Nginx配置文件而没有结果!
我做错了什么?这让我疯狂。
该网站是W3的总缓存插件WordPress的博客
谢谢您的帮助!
肯定听起来像是一个缓存问题。由于cURL标头是正确的,它们在浏览器请求中也应该是正确的。 Chrome/Firefox中是否禁用浏览器缓存?您可以在Chrome开发人员工具设置中执行此操作。 – rauberdaniel 2014-11-07 19:09:01
您是否找到解决方案? – 2016-12-21 10:39:08