Javascript - ERR_CONTENT_LENGTH_MISMATCH

Lia*_*mHT 42 html javascript jquery

我正在制作一个基本的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>
Run Code Online (Sandbox Code Playgroud)

用于更改背景的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";
  };
}
Run Code Online (Sandbox Code Playgroud)

lfe*_*445 51

我收到错误: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

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

读取上游文件xyz时出现"/ usr/local/var/run/nginx/proxy_temp/9/04/0000000049"失败(13:权限被拒绝)

继承人我是如何修理的:

sudo nginx -s stop    
sudo rm -rf /usr/local/var/run/nginx/*    
sudo nginx
Run Code Online (Sandbox Code Playgroud)

  • 有同样的问题,最终发现/ var /已满,不得不清除一些日志 (2认同)

Ami*_*rHd 7

摘要

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

解释Nginx权限

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

user nobody;
Run Code Online (Sandbox Code Playgroud)

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

location ^~ /static {
    alias /path/to/your/static/folder/;
    autoindex on;
    expires max;    
}
Run Code Online (Sandbox Code Playgroud)

这是nginx需要访问的文件夹.

另一方面,nginx在上面的答案的案例中有专用文件夹:

/usr/local/var/run/nginx/
Run Code Online (Sandbox Code Playgroud)

在我的情况下(CentOS),它在:

/var/lib/nginx/
Run Code Online (Sandbox Code Playgroud)

怎么会出错?

在任何一种情况下你都可以打破nginx:

1- Nginx作为无人运行,但没有对静态文件夹的正确访问权限.

2- Nginx作为无人运行,但随后以root身份运行以获取对静态文件夹的访问权限.

在我的情况下,最好的解决方案是更改nginx专用文件夹的权限以匹配我的静态文件夹.然后以具有对两者的正确访问权限的用户身份运行nginx.