间歇性加载图像失败 - ERR_CONTENT_LENGTH_MISMATCH

问题描述 投票:13回答:4

问题

我的网站无法随机加载随机图像。在控制台中使用以下错误加载图像的间歇性失败:

“GET example.com/image.jpg net :: ERR_CONTENT_LENGTH_MISMATCH”

图像要么根本不加载并且使用alt标记给出损坏的图像图标,要么中途加载并且其余部分被破坏(例如,颜色全部搞砸了,或者一半图像将变灰)。

建立

Litespeed服务器,PHP / mySQL网站,带有HTML,CSS,Javascript和JQuery。

重要笔记

  • 所有主要Web浏览器都会出现问题 - 间歇性地和各种图像。
  • 我通过htaccess在所有页面上强制使用UTF-8编码和HTTPS。
  • 托管提供商声明所有权限都已正确设置。
  • 在我的访问日志中,当图像无法加载时,它会为图像提供“200 OK”响应,并将传输的字节列为“0”(零)。
  • 几乎总是图像无法加载,但可能有5%的时间它将成为CSS文件或Javascript文件。
  • 将服务器从Apache移至Litespeed后立即出现问题,并且持续数周。
  • 启用Gzip和缓存。
javascript php html content-length
4个回答
1
投票

此错误是HTTP标头中公布的数据与通过线路传输的数据之间的明确不匹配。

它可能来自以下内容:

  1. 服务器:如果服务器有某些模块的错误,这些模块会更改内容但不更新标题中的内容长度或者无法正常工作。
  2. 代理:您和您的服务器之间的任何代理都可能正在修改请求而不更新内容长度标头。

如果设置错误的内容类型,也可能发生这种情况。

据我所知,我没有在IIS / apache / tomcat中看到这些问题,但主要是使用自定义编写的代码。 (在响应流上自己写图像)

它甚至可能是由您的广告拦截器造成的。

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


0
投票

建议使用cURL将图像作为离散url访问,例如php testCurlimg> image.log 2>&1,以确切了解服务器返回的内容。然后你可以移动级别来测试网页php testCurlpg> page.log 2>&1来查看混合数据的上下文


0
投票

我刚遇到同样的ERR_CONTENT_LENGTH_MISMATCH错误。我优化了图像并修复了它。我使用ImageOptim进行了图像优化,但我猜测任何图像优化工具都能正常工作。


0
投票

今天有这个问题,当我使用我在php中编写的代理来从Apache 2.4检索图像时,提供了一个用于访问couchdb后端的JWT auth网关。代理使用php fsockopen并且fread()缓冲区设置得相对较低(30字节),因为我已经看到这个值在其他人的工作中使用,我从未想过要改变它。在我所有失败的JPG(JFIF)图像中,我发现原始图像与服务图像之间的差异是一系列与fread缓冲区大小相匹配的crlf。增加缓冲区的字节长度,问题不再存在。

简而言之,如果您的fread缓冲区流式传输图像完全充满回车符和换行符,则数据会被截断。这也可能与Collin Krawll的帖子有关,为什么图像优化解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.