您好,登錄后才能下訂單哦!
最近碰到了nginx代理一個頁面后
proxy_pass http://8.1.1.1:6080/binding.html;
js加載成功,css卻無法加載的問題。
解決辦法:
1.http{}中添加
include /usr/local/openresty/nginx/conf/mime.types;
default_type application/octet-stream;
2.或者修改mime.types中css的type為application/octet-stream;
原因:互聯網中web服務器與瀏覽器通訊時,所有數據都是需要指定文件類型(type)的,否則瀏覽器不知道用什么插件來處理這些數據,比如音頻數據就要指定mid,.midi audio/midi,audio/x-midi等類型。
而我的服務器中的css文件在被nginx代理后,nginx找了原來html中對該css文件的type定義:
<link rel="stylesheet" href="css/style.css">
沒有type!!!
所以就報錯了!nginx不知道用什么編碼方式傳輸這類文件(它是不知道啥css的)
所以定義default_type application/octet-stream 后,nginx不管是什么文件類型,同意按字節流的類型進行轉發,這樣才最后傳輸到客戶端瀏覽器上。
那么問題來了,既然nginx那邊是以字節流轉發給了瀏覽器,瀏覽器不知道這是css文件,只是一堆字節流,為什么還能被加載出來?
因為現在主流瀏覽器也能默認識別出css文件的,很多開發者已經習慣不給css寫這東西了,但是對于很多特殊的數據類型,最好還是定義一下。
特別的,像nginx這類的代理,畢竟是輕量級的,沒有瀏覽器那么強大的識別能力,所以,為了考慮兼容性,開發者還是應該嚴謹一點!真的想吐槽!這個問題卡了我整整一個下午!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。