【问题标题】:Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH加载资源失败:net::ERR_CONTENT_LENGTH_MISMATCH
【发布时间】:2014-06-24 16:03:07
【问题描述】:

此错误消息是什么意思,我该如何解决?这是来自 Windows 7 上的 Google Chrome v33.0 控制台。

未能加载资源:net::ERR_CONTENT_LENGTH_MISMATCH           http://and.img.url/here.png

我正在尝试使用 jQuery 更改图像的 src 属性。例如像这样(简化):

$('.image-prld').attr('src', someDynamicValue);

页面上有大约 30 张图片。每次我重新加载页面时,随机图像都会发生上述错误。但有时它适用于所有图像,没有任何错误。

发生此错误时,特定图像显示为this

但是,当我在新选项卡上打开错误消息旁边的链接时,图像正在加载,这从逻辑上说我图像是有效的并且它存在。

【问题讨论】:

  • 只是猜测,您的浏览器正在从服务器接收content-length 标头,该标头不等于内容的实际长度。
  • 您是否在除您自己的网站之外的任何其他网站上遇到过此错误?
  • 不,我不知道。我在其他网站上没有看到此消息。
  • 我好像只在 Chrome 上看到过这个。我尝试过 FF 和 IE,但在每个浏览器上重新加载大约 15 次页面后无法重现此问题。
  • @Niet the Dark Absol,那么关于在另一个标签上成功加载图像的故事是什么?相同的 URL,来自不同的页面/标签,一个加载,另一个失败。

标签: javascript jquery image google-chrome


【解决方案1】:

运行docker system prune -a 对我有用。我没有任何运气来重建我的容器或遵循@mrroot5 的回答,尽管这些似乎可以实现类似的目标。

【讨论】:

    【解决方案2】:

    这对我有用。

            proxy_buffer_size   1M;
            proxy_buffers   4 1M;
            proxy_busy_buffers_size
    

    我在 nginix proxy.conf 文件中增加了上述参数的大小。 在这里,nginix 充当我基于微服务的应用程序的代理。

    【讨论】:

    • 添加 proxy_buffer_size 和 proxy_buffers 为我解决了这个问题。但是,您的 proxy_busy_buffers_size 指令似乎不完整。我的用例似乎不需要。
    【解决方案3】:

    在我的情况下,我正在修改请求以将标头(使用 Fiddler)附加到 https 请求,但我没有将其配置为 decrypt https traffic. 您可以从 Fiddler 导出手动创建的证书,所以您可以通过浏览器信任/导入证书。有关详细信息,请参见上面的链接,其中一些步骤包括:

    1. 单击工具 > Fiddler 选项。
    2. 单击 HTTPS 选项卡。确保选中解密 HTTPS 流量复选框。
    3. 单击将 Fiddler 根证书导出到桌面按钮。

    【讨论】:

      【解决方案4】:

      如果有人使用 docker + nginx 来解决这个问题,那可能是权限问题。 Nginx 日志显示错误:

      2019/12/16 08:54:58 [crit] 6#6: *23 open() "/var/tmp/nginx/fastcgi/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 172.24.0.2, server: test.loc, request: "GET /login HTTP/1.1", upstream: "fastcgi://172.28.0.2:9001", host: "test.loc"
      

      在 nginx 容器内运行(路径可能不同):

      chown -R www-data:www-data /var/tmp/nginx/
      

      【讨论】:

        【解决方案5】:

        Docker + NGINX

        在我的情况下,问题是 nginx docker 容器磁盘空间。我有 10GB 的日志,当我减少这个数量时它可以工作。

        一步一步(新手/新手)

        1. 在您的容器中输入:docker exec -it <container_id> bash

        2. 转到您的日志,例如:cd /var/log/nginx

        3. [可选] 显示文件大小:ls -lh 表示单个文件大小,du -h 表示文件夹大小。

        4. 带有> file_name 的空文件。

        5. 有效!

        适用于高级开发人员/系统管理员

        使用> file_name 或类似名称清空您的 nginx 日志。

        希望对您有所帮助

        【讨论】:

        • 在第 4 步保存 10 个击键,只需 > file_name ;)
        • tnx!拯救了我的一天
        • 谢谢@IanEllis。我添加了高级开发人员/系统管理员选项
        • 我遇到了这个问题,但不确定为什么会发生。我有一个中等大小的图像,只能在 Chrome 中加载。我有足够的磁盘空间。一旦我按照上面的操作,它就起作用了。如果有足够的磁盘空间,为什么会发生这种情况?另外,只使用 nginx,而不是 docker。
        • Disk space 是关键字!
        【解决方案6】:

        如果这与 docker 有关,请尝试停止错误容器并使用同一映像中的 docker run 命令启动新容器。

        【讨论】:

          【解决方案7】:

          就我而言,是代理问题(从 nginx 代理到清漆缓存的请求)导致了该问题。我需要将以下内容添加到我的代理定义中

                  proxy_set_header Connection keep-alive; 
          
          

          我在这里找到了答案:https://stackoverflow.com/a/55341260/1062129

          【讨论】:

            【解决方案8】:

            这可能是由磁盘已满(Ubuntu/Nginx)引起的。

            我的情况:

            【讨论】:

            • 在我的情况下,磁盘未满,但脚本很有用。可能是临时文件夹已满?
            • @echo 如果 tmp 文件夹有自己的“磁盘”,可能会出现这种情况?如果你用“df -h”检查你应该看看是不是这样?如果磁盘上有很多文件,也可能是 inode 用完了(如果是这种情况,我相信“df -i”应该会显示)。如果其中任何一个显示“完整磁盘”清理可能会有所帮助;)
            【解决方案9】:

            在我的情况下,我错误地计算了我在标题中宣传的 Content-Length。我正在为文件提供 Range-Requests,但我错误地在 Content-Length 中发布了文件大小。

            我通过将 Content-Length 设置为我发送回浏览器的实际范围来解决问题。

            因此,如果我回答正常请求,我会将 Content-Length 设置为文件大小。如果我正在回答范围请求,我将 Content-Length 设置为请求范围的实际长度。

            【讨论】:

              【解决方案10】:

              它甚至可能是由您的ad blocker 引起的。

              尝试禁用它或为图像来自的域添加例外。

              【讨论】:

              • 正确!知道为什么会这样吗?是因为广告拦截器将代码注入到每个提取的文件中吗?如果是这样,为什么不是每个请求的文件都发生这种情况?
              • 实际上我不知道广告拦截器究竟是如何工作的(这就是我使用条件的原因)。可能与过滤器有关,因此代码不会注入到每个文件中,而只会注入到与过滤器中描述的特定模式匹配的文件上。
              • 哇,这个问题已经在 5 年前提出了。然而,它对我的​​情况有所帮助。
              【解决方案11】:

              此错误是在 HTTP 标头中公布的数据与通过网络传输的数据之间明显不匹配。

              它可能来自以下:

              1. 服务器:如果服务器存在某些模块的错误,该错误会更改内容但不更新标头中的内容长度或无法正常工作。 Node HTTP 代理在某些时候就是这种情况(请参阅here

              2. 代理:您和您的服务器之间的任何代理都可能会修改请求而不更新内容长度标头。

              据我所知,我在 IIS 中没有看到这些问题,但主要是自定义编写的代码。

              如果有帮助,请告诉我。

              【讨论】:

              • 是的,但是你如何强制 Chrome 忽略错误并显示/呈现页面呢?整个文档已经传输,只是长度不匹配。它在 Curl 中工作(它只是不渲染)。
              • 你没有。强迫它就像修补一个症状。找到根本原因,修复它,享受更健康的网络。
              • 服务器位于旧路由器内!我没有访问权限!
              • “HTTP 标头中公布的数据之间存在明确的不匹配” - 由于后端返回的 JSON 无效而发生在我身上..
              • 只需尝试刷新浏览器即可解决。
              猜你喜欢
              • 2020-11-24
              • 2015-05-04
              • 2014-05-29
              • 1970-01-01
              • 2018-10-10
              • 2014-07-06
              • 2015-08-17
              • 2014-07-04
              • 1970-01-01
              相关资源
              最近更新 更多