问题描述

我正在做一个基本的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。