css跨域加載字體

一直以為css中鏈接的資源,不會(huì)因?yàn)榭缬蚨鴮?dǎo)致加載失敗。比方說圖片。

但今天還是遇到了跨域失敗的問題。

chrome瀏覽器中提示:Access to Font at 'http://static.utsing.com/ienglish/font.ttf' from origin 'http://ienglish.utsing.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ienglish.utsing.com' is therefore not allowed access.

edge瀏覽器中提示:CSS3115: @font-face 跨源請求失敗。無 Access-Control-Allow-Origin 標(biāo)頭。

這其實(shí)就是跨域?qū)е录虞d失敗。這可能是對于ttf這樣的資源存在一些潛在的危險(xiǎn),不像圖片那樣安全,所以瀏覽器默認(rèn)禁止其跨域加載。

http://ienglish.utsing.com為主站,http://static.utsing.com為靜態(tài)資源站。

解決方法:

1.跨域?qū)е碌膯栴},那就不要跨域了。將資源(http://static.utsing.com/ienglish/font.ttf)放到主站下,并修改對應(yīng)鏈接。(估計(jì)這個(gè)方法,你的上司不滿意)

2.將靜態(tài)資源站設(shè)置為可以跨域。只要為此資源加入Access-Control-Allow-Origin這個(gè)header即可。

如果是nginx服務(wù)器的話,你可以在http塊內(nèi)加上如下代碼:

? ? ?add_header Access-Control-Allow-Origin http://ienglish.utsing.com;? //必須

? ? ?add_header Access-Control-Allow-Headers X-Requested-With;//可選

? ? ?add_header Access-Control-Allow-Methods GET,POST,OPTIONS;//可選

你也可以在php、java等代碼中加入Access-Control-Allow-Origin、Access-Control-Allow-Headers?、Access-Control-Allow-Methods這些header。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容