問題描述

我正在做一個基本的 jquery 操場場。我收到錯誤:net::ERR_CONTENT_LENGTH_MISMATCH 發生在頁面加載和背景圖像沒有加載在頁面上。

所討論的圖像是 300kb,也是動態變化的。我假設這與文件大小有關,但我真的不知道什麼。

原來使用的 HTML

<p style="margin:0px; padding:0px;"><img id="background" src="/bg1.jpg" style='width:100%;' border="0" alt="Null"></p>

javascript /jquery 用來改變背景:

 var changebg = function() {
    if (myscore % 20 == 0) {
        level++;
        document.getElementById("level").innerHTML = "Level: " + level;
        $("#level").fadeIn(1500, function(){$("#level").hide()})
        backgroundindex++;
        if (backgroundindex > 6) {backgroundindex == Math.floor((Math.random()*6)+1)};
document.getElementById("background").src="/bg"+backgroundindex+".jpg";
    };
  }

最佳解決思路

I am getting Error: net::ERR_CONTENT_LENGTH_MISMATCH

看看您的服務器日誌,以確定真正的問題是什麼。

對我來説,這個問題放在 nginx 和文件權限之間:

  • tail -f /usr/local/var/log/nginx/error.log 或運行 nginx -t 來確定您的 conf 位置,您可以在哪裏指定自定義日誌路徑。

  • 刷新瀏覽器中的資產,例如 http://localhost:3000/assets/jquery/jquery.js

您可能會在日誌中看到類似的內容:

“/usr/local/var/run/nginx/proxy_temp/9/04/0000000049” failed (13: Permission denied) while reading upstream for file xyz

謝謝我如何修復:

sudo nginx -s stop    
sudo rm -rf /usr/local/var/run/nginx/*    
sudo nginx

次佳解決思路

總結

這是對我的情況發生了什麼的更詳細的解釋。在這裏選擇的答案幫助我解決了我的問題,這基本上是一個更詳細的版本的選擇答案關於如何和 whys!

解釋 Nginx 權限

您可以將 nginx 作為 nobody 用户運行,這是大多數示例配置中的常見做法。您將在配置頂部找到此行:

user nobody;

但是建議對於您的 web-apps 靜態內容,如 css,js 和圖像文件,以允許 nginx 訪問並通過繞過您的 web-app 容器來實現。這是你的配置的一部分:

location ^~ /static {
    alias /path/to/your/static/folder/;
    autoindex on;
    expires max;    
}

這是 nginx 需要訪問的文件夾。

另一方面,有 nginx 專用文件夾,在上面的答案中有:

/usr/local/var/run/nginx/

在我的情況 (CentOS),它在:

/var/lib/nginx/

怎麼會出錯?

在任何一種情況下,您可以打破 nginx

1- Nginx 以任何人身份運行,但沒有正確的訪問您的靜態文件夾。

2- Nginx 以無人身份運行,但以 root 身份運行,以訪問您的靜態文件夾。

解決方案

我最好的解決辦法是改變 nginx 專用文件夾的權限,以匹配我的靜態文件夾。然後運行 nginx 作為一個用户正確訪問這兩個。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。