Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误

在过去的两个月中,我在Chrome的开发者控制台上收到以下错误消息:

net::ERR_INCOMPLETE_CHUNKED_ENCODING 

症状:

  • 页面未加载。
  • 截断的CSS和JS文件。
  • 页面悬挂。

服务器环境:

  • Apache 2.2.22
  • PHP
  • Ubuntu的

我们在内部的Apache服务器上发生了这种情况。 这不会发生在其他任何人身上 – 即我们的用户没有遇到这个问题 – 我们的开发团队也没有其他人。

其他人正在使用完全相同版本的Chrome浏览器访问完全相同的服务器。 我也曾尝试禁用所有扩展程序,并在隐身模式下浏览 – 无效。

我已经使用Firefox和完全相同的事情正在发生。 截断的文件和whatnot。 唯一的事情是,Firefox不会引发任何控制台错误,所以你需要通过Firebug检查HTTP请求来查看问题。

来自Apache的响应头文件:

 Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection:close Content-Encoding:gzip Content-Type:text/html; charset=utf-8 Date:Mon, 27 Apr 2015 10:52:52 GMT Expires:Thu, 19 Nov 1981 08:52:00 GMT Pragma:no-cache Server:Apache/2.2.22 (Ubuntu) Transfer-Encoding:chunked Vary:Accept-Encoding X-Powered-By:PHP/5.3.10-1ubuntu3.8 

在testing时,我可以通过在htaccess文件中强制使用HTTP 1.0来解决这个问题:

 SetEnv downgrade-1.0 

这摆脱了这个问题。 但是,通过HTTP 1.1强制HTTP 1.0不是一个合适的解决scheme。

更新 :因为我是唯一遇到这个问题的人,所以我觉得我需要花更多的时间去调查这是不是客户端问题。 如果我进入Chrome的设置并使用“恢复到默认”选项, 问题将消失约10-20分钟。 然后它返回。

好。 我进行了三重testing,我确信这是由我的防病毒(ESET NOD32 ANTIVIRUS 5)引起的。

每当我禁用实时保护时,问题就会消失。 今天,我将实时保护closures了6-7个小时,问题从未发生过。

几分钟之前,我又打开了电话,只是在一分钟之内解决了问题。

在过去的24小时内,我确实已经开启和closures了实时保护。 每一次 – 结果都是一样的。

更新:我遇到了另一个开发人员,他的卡巴斯基反病毒实时保护有完全相同的问题。 他禁用了,问题就消失了。 即这个问题似乎并不局限于ESET。

错误是试图说,Chrome浏览器被切断,而页面正在发送。 你的问题是试图找出原因。

显然这可能是一个已知的问题,影响到几个版本的Chrome。 据我所知,这些版本对被发送的块的内容长度以及该块的expression大小(我可能在这个块上远远不够)是一个大问题。 总之,一个稍微不完美的标题问题。

另一方面,可能是服务器不发送terminal长度为0的块。 哪个可以用ob_flush(); 。 Chrome(或连接或其他)的速度也很慢,所以当连接closures时,页面还没有加载。 我不知道为什么会发生这种情况。

这里是偏执的程序员回答:

 <?php // ... your code flush(); ob_flush(); sleep(2); exit(0); ?> 

在你的情况下,这可能是脚本超时的情况。 我不是很确定为什么它只会影响到你,但它可以做到一堆的竞争条件? 这是一个完全的猜测。 你应该可以通过扩展脚本执行时间来testing这个。

 <?php // ... your while code set_time_limit(30); // ... more while code ?> 

这也可能是简单的,因为你需要更新你的Chrome安装(因为这个问题是特定于Chrome的)。

更新:当PHP(在同一本地主机上) 缓冲输出时,我能够复制这个错误(最后)。 我想,输出太糟糕了,不能使用(标题,但很less或没有内容)。

具体来说,我意外地有我的代码recursion调用自己,直到PHP,正确地,放弃了。 因此,服务器没有发送terminal长度为0的数据块 – 这是我之前确定的问题。

以下应该为每个客户解决它。

 //Gather output (if it is not already in a variable, use ob_start() and ob_get_clean() ) // Before sending output: header('Content-length: ' . strlen($output)); 

但在我的情况下,以下是一个更好的select,并修复它:

的.htaccess:

 php_value opcache.enable 0 

我有这个问题。 在对这个问题的其他答案进行最多的尝试后追查下来。 这是由/var/lib/nginx的拥有者和权限引起的,更具体地说是/var/lib/nginx/tmp目录不正确。

fast-cgi使用tmp目录来caching生成的响应,但只有当它们大于特定的大小时。 所以这个问题是间歇性的,只有当生成的响应很大时才会发生。

检查nginx <host_name>.error_log以查看是否有权限问题。

要修复,请确保/var/lib/nginx的所有者和组以及所有子目录都是nginx。

OMG,5分钟前我有同样的问题。 我花了几个小时find一个解决scheme。 一见钟情在Windows上禁用防病毒解决的问题。 但后来我注意到其他的Linux电脑没有杀毒软件的问题。 在nginx日志中没有错误。 我的uwsgi展示了一些关于“破碎的pipe道”的内容,但没有提供所有请求。 知道什么? 设备上没有剩余空间,我在数据库日志中重新启动服务器时发现了这个空间, df同意这一点。 只解释为什么杀毒软件解决了这个问题,它阻止浏览器caching(它应该检查每个请求),但浏览器有一些奇怪的行为可以简单地忽略不良反应,并显示caching的响应。

这是已知的Chrome问题。 根据Chrome和Chromium bug跟踪器,这没有通用的解决scheme。 这个问题与服务器types和版本无关,在Chrome中是正确的。

设置Content-Encoding标题来解决这个问题给我。

来自developer.mozilla.org

身份| 指示身份function(即不压缩,也不修改)。

所以,我可以build议,在某些情况下,Chrome无法正确执行gzip压缩。

这里的问题是我的Avast AV。 一旦我禁用了,问题就没有了。

但是,我真的很想了解这种行为的原因。

我只是盯着有类似的问题。 并且注意到只有当页面包含序数值大于255的UTF-8字符(即多字节)时才会发生。

结果是这个问题是如何计算Content-Length标题。 底层后端是计算字符长度,而不是字节长度。 closures内容长度标题可以暂时解决问题,直到我可以修复后端模板系统。

我很抱歉地说,我没有一个确切的答案给你。 但是我也遇到了这个问题,至less在我的情况下,find了一个解决方法。 所以也许它会提供一些线索给其他谁知道更多关于PHP的引擎盖。

场景是,我有一个数组传递给一个函数。 这个数组的内容被用来生成一个HTMLstring,通过把它们全部放在后面打印的全局variables中,发回给浏览器。 (这个函数实际上并没有返回任何东西,虽然马虎,我知道,但这不是那么重要)。在这个数组中,除了其他的东西外,还有一些元素是通过引用的方式携带在这个函数之外定义的嵌套关联数组。 通过消除过程,我发现在这个函数内部操作数组中的任何元素,包括试图去除那些被引用的元素,导致Chrome抛出net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误,并且不显示任何内容。 尽pipe全局variables中的HTMLstring正是它应该是的事实。

只有通过重新编写脚本才能不首先应用对数组元素的引用,事情又会开始正常工作。 我怀疑这实际上是一个PHP引起的错误,这个引用的元素出现在内容长度头文件中,但是我确实不太清楚这个问题。

我在Chrome和Firefox中遇到了这个问题。 如果我closures了Avast Web Shield,它就会消失。 我似乎已经设法通过在我的htaccess文件中添加一些html5样板htaccess来运行Web Shield:

 # ------------------------------------------------------------------------------ # | Expires headers (for better cache control) | # ------------------------------------------------------------------------------ # The following expires headers are set pretty far in the future. If you don't # control versioning with filename-based cache busting, consider lowering the # cache time for resources like CSS and JS to something like 1 week. <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 week" # Data interchange ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) ExpiresByType image/x-icon "access plus 1 week" # HTML components (HTCs) ExpiresByType text/x-component "access plus 1 month" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 week" # Manifest files ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" # Media ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # Web feeds ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" # Web fonts ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" </IfModule> # ------------------------------------------------------------------------------ # | Compression | # ------------------------------------------------------------------------------ <IfModule mod_deflate.c> # Force compression for mangled headers. # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # Compress all output labeled with one of the following MIME-types # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` # and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines # as `AddOutputFilterByType` is still in the core directives). <IfModule mod_filter.c> AddOutputFilterByType DEFLATE application/atom+xml \ application/javascript \ application/json \ application/rss+xml \ application/vnd.ms-fontobject \ application/x-font-ttf \ application/x-web-app-manifest+json \ application/xhtml+xml \ application/xml \ font/opentype \ image/svg+xml \ image/x-icon \ text/css \ text/html \ text/plain \ text/x-component \ text/xml </IfModule> </IfModule> # ------------------------------------------------------------------------------ # | Persistent connections | # ------------------------------------------------------------------------------ # Allow multiple requests to be sent over the same TCP connection: # http://httpd.apache.org/docs/current/en/mod/core.html#keepalive. # Enable if you serve a lot of static content but, be aware of the # possible disadvantages! <IfModule mod_headers.c> Header set Connection Keep-Alive </IfModule> 

在我的情况下,我有/usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied) 3/07/0000000073 /usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied)可能导致Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误。

我不得不删除/usr/local/var/run/nginx/让nginx重新创build它。

 $ sudo rm -rf /usr/local/var/run/nginx/ $ sudo nginx -s stop $ sudo mkdir /usr/local/var/run/nginx/ $ sudo chown nobody:nobody /usr/local/var/run/nginx/ $ sudo nginx 

我只是想分享我的经验,如果有人可能有与MOODLE相同的问题。

我们的moodle平台突然非常慢,仪表板花费了大约2-3倍的时间加载(长达6秒),然后有时页面没有得到加载(不是一个404错误,而是一个空白页)。 在开发工具控制台中,以下错误是可见的: net::ERR_INCOMPLETE_CHUNKED_ENCODING.

search这个错误,它看起来像铬是问题,但我们遇到了各种浏览器的问题。 经过几个小时的研究和比较数据库之前,我终于find了问题,有人把事件监测打开。 但是,在“configuration更改”日志中,此更改不可见! closures事件监视,终于解决了这个问题 – 我们没有规定事件监视的规则。

我们使用MariaDB和PHP 5.4运行Moodle 3.1.2+。

我的修复是:

 <?php ob_start(); ?> <!DOCTYPE html> <html lang="de"> ..... ....//your whole code .... </html> <?php ob_clean(); ob_end_flush(); ob_flush(); ?> 

希望这将有助于未来的人,在我的情况下,它是一个卡巴斯基问题,但上面的修复很好:)

这是发生在两个不同的客户端服务器相隔几年,使用相同的代码,这是同时在数百个其他服务器上部署的时间没有问题。

对于这些客户端来说,主要发生在具有stream式HTML的PHP​​脚本上 – 也就是说,“连接:closures”页面,在输出可用时将输出发送到浏览器。

事实certificate,PHP过程和Web服务器之间的连接在脚本完成之前过早地下降,在超时之前。

问题是主php.ini文件中的opcache.fast_shutdown = 1。 这个指令在默认情况下是禁用的,但似乎有些服务器pipe理员认为这里有一个性能提升。 在我的所有testing中,我从来没有注意到使用这个设置的积极差异。 根据我的经验,它导致一些脚本实际执行速度更慢,并且在脚本仍在执行时有时进入closures状态,甚至在Web服务器仍然从缓冲区中读取时执行结束时,都有可怕的跟踪logging。 有一个从2013年的旧bug报告,截至2017年2月,这可能是相关的: https : //github.com/zendtech/ZendOptimizerPlus/issues/146

我看到由于此ERR_INCOMPLETE_CHUNKED_ENCODING ERR_SPDY_PROTOCOL_ERROR出现以下错误有时有相关的段错误logging; 有时候不是。

如果你遇到任何一个,检查你的phpinfo,并确保opcache.fast_shutdown被禁用。

好。 不久前我也遇到了这个问题。 最后我得到解决这个问题的解决scheme。

我的问题症状也是页面不加载,并发现JSON数据被随机截断。

下面是我总结可以帮助解决这个问题的解决scheme

 1.Kill the anti-virus software process 2.Close chrome's Prerendering Instant pages feature 3.Try to close all the apps in your browser 4.Try to define your Content-Length header <?php header('Content-length: ' . strlen($output)); ?> 5.Check your nginx fastcgi buffer is right 6.Check your nginx gzip is open 

如果有任何不存在的循环或项目,那么你就面临这个问题。

在Chrome上运行应用程序时,该页面为空,并且无响应。

场景开始:

开发环境:MAC,STS 3.7.3,tc Pivotal Server 3.1,Spring MVC Web,

在$ {myObj.getfName()}中

场景结束:

问题的原因:getObName()函数没有在myObj上定义。

希望它能帮助你。

我的猜测是服务器没有正确处理分块传输编码。 它需要terminal分块的文件与terminal块表明整个文件已被转移。所以下面的代码可能工作:

 echo "\n"; flush(); ob_flush(); exit(0); 

在我的情况下,它是破坏configuration为服务器上的mysqlnd_ms PHP扩展。 有趣的是,它对于持续时间短的请求工作正常。 服务器错误日志中有一个警告,所以我们已经修复了它。

这似乎是一个多种原因和解决scheme的常见问题,所以我会把我的答案放在任何需要它的人身上。

我在Chrome,osx,php70,httpd24组合上得到了net::ERR_INCOMPLETE_CHUNKED_ENCODING ,但是在生产服务器上相同的代码运行正常。

我最初盯着常规的日志,但没有真正显示出来。 一个快速的ls -later显示system.log/var/log的最新的感动文件,并且给了我一个拖尾

 Saved crash report for httpd[99969] version 2.4.16 (805) to /Library/Logs/DiagnosticReports/httpd.crash 

包含在:

 Process: httpd [99974] Path: /usr/sbin/httpd Identifier: httpd Version: 2.4.16 (805) Code Type: X86-64 (Native) Parent Process: httpd [99245] Responsible: httpd [99974] User ID: 70 PlugIn Path: /usr/local/opt/php70-mongodb/mongodb.so PlugIn Identifier: mongodb.so 

一个brew uninstall php70-mongodb和一个httpd -k restart ,一切都是顺利的航行。

在我的情况下,这是问题的HTML。 json响应中有'\ n'导致问题。 所以我删除了。

引人入胜,看看这个问题有多less种不同的原因!

许多人说这是一个Chrome的问题,所以我尝试了Safari,仍然有问题。 然后尝试在这个线程中的所有解决scheme,包括closures我的AVG实时保护,没有运气。

对我来说,问题是我的.htaccess文件。 它包含的所有内容是FallbackResource index.php ,但是当我将其重命名为htaccess.txt ,我的问题已解决。

我正在越来越net::ERR_INCOMPLETE_CHUNKED_ENCODING ,仔细检查服务器错误很net::ERR_INCOMPLETE_CHUNKED_ENCODING ,我发现这是由于PHP脚本执行超时。

在PHP脚本的基础上添加这行代码给我解决了这个问题:

 ini_set('max_execution_time', 300); //300 seconds = 5 minutes 

参考: 致命错误:超过30秒的最大执行时间

在我的情况下,这是发生在一个Web API返回有效载荷的JSON序列化 – 我在我的entity framework模型中有一个“循环”引用,我返回一个简单的一对多的对象图,但孩子有一个参考回父母,这显然是JSON序列化程序不喜欢。 删除引用父级的孩子的属性做了诀窍。

希望这可以帮助那些可能有类似问题的人。

Interesting Posts