问题
我的网站无法随机加载随机图像。在控制台中使用以下错误加载图像的间歇性失败:
“GET example.com/image.jpg net :: ERR_CONTENT_LENGTH_MISMATCH”
图像要么根本不加载并且使用alt标记给出损坏的图像图标,要么中途加载并且其余部分被破坏(例如,颜色全部搞砸了,或者一半图像将变灰)。
建立
Litespeed服务器,PHP / mySQL网站,带有HTML,CSS,Javascript和JQuery。
重要笔记
此错误是HTTP标头中公布的数据与通过线路传输的数据之间的明确不匹配。
它可能来自以下内容:
如果设置错误的内容类型,也可能发生这种情况。
据我所知,我没有在IIS / apache / tomcat中看到这些问题,但主要是使用自定义编写的代码。 (在响应流上自己写图像)
它甚至可能是由您的广告拦截器造成的。
尝试禁用它或为图像来自的域添加例外。
建议使用cURL将图像作为离散url访问,例如php testCurlimg> image.log 2>&1,以确切了解服务器返回的内容。然后你可以移动级别来测试网页php testCurlpg> page.log 2>&1来查看混合数据的上下文
我刚遇到同样的ERR_CONTENT_LENGTH_MISMATCH
错误。我优化了图像并修复了它。我使用ImageOptim进行了图像优化,但我猜测任何图像优化工具都能正常工作。
今天有这个问题,当我使用我在php中编写的代理来从Apache 2.4检索图像时,提供了一个用于访问couchdb后端的JWT auth网关。代理使用php fsockopen并且fread()缓冲区设置得相对较低(30字节),因为我已经看到这个值在其他人的工作中使用,我从未想过要改变它。在我所有失败的JPG(JFIF)图像中,我发现原始图像与服务图像之间的差异是一系列与fread缓冲区大小相匹配的crlf。增加缓冲区的字节长度,问题不再存在。
简而言之,如果您的fread缓冲区流式传输图像完全充满回车符和换行符,则数据会被截断。这也可能与Collin Krawll的帖子有关,为什么图像优化解决了这个问题。