Javascript - ERR_CONTENT_LENGTH_MISMATCH

时间:2014-03-04 21:50:52

标签: javascript jquery html

我正在制作一个基本的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";
  };
}

8 个答案:

答案 0 :(得分:49)

  

我收到错误:net :: ERR_CONTENT_LENGTH_MISMATCH

查看服务器日志以确定真正的问题。

对我来说,问题在于nginx和文件权限:

  • tail -f /usr/local/var/log/nginx/error.log或运行nginx -t以确定您的配置位置,您可以在其中指定自定义日志路径。
  • 在浏览器中刷新资源,例如http://localhost:3000/assets/jquery/jquery.js

您可能会在日志中看到类似的内容:

  

&#34;在/ usr /本地的/ var /运行/ nginx的/ proxy_temp那/ 9/04/0000000049&#34;失败了(13:   读取上游文件xyz时的权限被拒绝

我是如何修理的:

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

答案 1 :(得分:7)

摘要

以下是对我案件中发生的事情的更详细解释。这里选择的答案帮助我解决了我的问题,这基本上是一个更详细的选择答案的方法和原因!

解释Nginx权限

您可以nginx作为nobody用户运行,这是大多数示例配置中的常见做法。您会在配置顶部找到此行:

user nobody;

但建议您的网络应用程序静态内容(如css,js和图像文件)允许nginx访问并通过绕过您的网络应用程序兑现 容器。这是配置中的部分:

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。

答案 2 :(得分:2)

如果您使用的是nginx +代理服务器,请尝试: proxy_buffering off;

更多信息:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

答案 3 :(得分:1)

我的团队在我们提供的单个javascript文件中看到了这一点。其他所有文件都工作正常。我们最初看到了net::ERR_HTTP2_PROTOCOL_ERROR。我们从http2切换回http1.1,然后是net::ERR_INCOMPLETE_CHUNKED_ENCODINGERR_CONTENT_LENGTH_MISMATCH。我们最终发现,有一个公司过滤器(Trustwave)错误地检测到“信息泄漏”(我们怀疑它在我们的文件/文件名中检测到类似于社会保险号的某项)。让公司调整此过滤器可以解决我们的问题。

答案 4 :(得分:0)

构建rails应用时遇到了同样的错误。我用不同的图像替换了图像,并没有更改文件名,这引发了上面的错误。只需更改文件名即可使问题消失。

答案 5 :(得分:0)

就我而言,我在nodemon server.js(服务器端呈现)应用中使用next.js。通过切换回node server.js,错误消失了。

答案 6 :(得分:0)

另一个出现此错误的情况:当尝试使用Angular 7从节点服务器下载文件时,我不得不使用window.location.href = <node_server_url>进行重定向,而不是通常的httpClient.get<any>(<node_server_url>)

答案 7 :(得分:-1)

以下是解决此问题的另一种方法: http://derekneely.com/2009/06/nginx-failed-13-permission-denied-while-reading-upstream/

注意:从安全角度来看,我不同意作者建议为文件夹授予777权限的链接。给出完成工作所需的最低水平(在这种情况下,700应该没问题,你甚至可以降低,但我还没有尝试)。