我的子字段中有我的字體,例如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