溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于nginx 代理頁(yè)面中某些數(shù)據(jù)(css,視頻流)無(wú)法加載

發(fā)布時(shí)間:2020-07-01 08:38:27 來(lái)源:網(wǎng)絡(luò) 閱讀:683 作者:黃勁峰_Res 欄目:建站服務(wù)器

最近碰到了nginx代理一個(gè)頁(yè)面后
proxy_pass http://8.1.1.1:6080/binding.html;
js加載成功,css卻無(wú)法加載的問(wèn)題。

解決辦法:
1.http{}中添加
include /usr/local/openresty/nginx/conf/mime.types;
default_type application/octet-stream;

2.或者修改mime.types中css的type為application/octet-stream;

原因:互聯(lián)網(wǎng)中web服務(wù)器與瀏覽器通訊時(shí),所有數(shù)據(jù)都是需要指定文件類(lèi)型(type)的,否則瀏覽器不知道用什么插件來(lái)處理這些數(shù)據(jù),比如音頻數(shù)據(jù)就要指定mid,.midi audio/midi,audio/x-midi等類(lèi)型。
而我的服務(wù)器中的css文件在被nginx代理后,nginx找了原來(lái)html中對(duì)該css文件的type定義:
<link rel="stylesheet" href="css/style.css">
沒(méi)有type?。?!
所以就報(bào)錯(cuò)了!nginx不知道用什么編碼方式傳輸這類(lèi)文件(它是不知道啥css的)
所以定義default_type application/octet-stream 后,nginx不管是什么文件類(lèi)型,同意按字節(jié)流的類(lèi)型進(jìn)行轉(zhuǎn)發(fā),這樣才最后傳輸?shù)娇蛻舳藶g覽器上。

那么問(wèn)題來(lái)了,既然nginx那邊是以字節(jié)流轉(zhuǎn)發(fā)給了瀏覽器,瀏覽器不知道這是css文件,只是一堆字節(jié)流,為什么還能被加載出來(lái)?
因?yàn)楝F(xiàn)在主流瀏覽器也能默認(rèn)識(shí)別出css文件的,很多開(kāi)發(fā)者已經(jīng)習(xí)慣不給css寫(xiě)這東西了,但是對(duì)于很多特殊的數(shù)據(jù)類(lèi)型,最好還是定義一下。
特別的,像nginx這類(lèi)的代理,畢竟是輕量級(jí)的,沒(méi)有瀏覽器那么強(qiáng)大的識(shí)別能力,所以,為了考慮兼容性,開(kāi)發(fā)者還是應(yīng)該嚴(yán)謹(jǐn)一點(diǎn)!真的想吐槽!這個(gè)問(wèn)題卡了我整整一個(gè)下午!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI