Way*_*tty 116 php apache google-chrome chunked chunked-encoding
在过去两个月中,我在Chrome的开发者控制台上收到以下错误:
net::ERR_INCOMPLETE_CHUNKED_ENCODING
Run Code Online (Sandbox Code Playgroud)
症状:
服务器环境:
在我们内部的Apache服务器上发生了这种情况.它不会发生在任何其他人身上 - 即我们的用户都没有遇到这个问题 - 我们的开发团队也没有其他人.
其他人使用完全相同的Chrome版本访问完全相同的服务器.我还尝试禁用所有扩展程序并在隐身模式下浏览 - 无效.
我使用过Firefox并且发生了同样的事情.截断的文件和诸如此类的东西.唯一的问题是,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
Run Code Online (Sandbox Code Playgroud)
在测试时,我能够通过在我的htaccess文件中强制HTTP 1.0来解决问题:
SetEnv downgrade-1.0
Run Code Online (Sandbox Code Playgroud)
这摆脱了问题.但是,通过HTTP 1.1强制HTTP 1.0不是一个合适的解决方案.
更新:因为我是唯一一个遇到此问题的人,我认为我需要花更多的时间来调查它是否是客户端问题.如果我进入Chrome的设置并使用"恢复默认设置"选项,问题将消失大约10-20分钟.然后它返回.
Way*_*tty 71
好.我对此进行了三次测试,我100%确定它是由我的反病毒引起的(ESET NOD32 ANTIVIRUS 5).
每当我禁用实时保护时,问题就会消失.今天,我将实时保护关闭了6-7个小时,问题从未发生过.
不久之前,我重新打开它,只是为了让问题在一分钟内浮出水面.
在过去的24小时内,我已经开启和关闭实时保护,只是为了确定.每次 - 结果都是一样的.
更新:我遇到了另一个开发人员,他对卡巴斯基反病毒的实时保护问题完全相同.他禁用了它,问题就消失了.即这个问题似乎并不局限于ESET.
Mat*_*att 41
该错误试图说明Chrome页面在发送时被切断了.你的问题是试图找出原因.
显然,这可能是影响几个版本Chrome的已知问题.据我所知,这些版本的问题是对正在发送的块的内容长度以及该块的表达大小非常敏感(我可能远远不在那个版本上).简而言之,一个稍微不完美的标题问题.
另一方面,可能是服务器不发送终端0长度的块.哪个可以修复ob_flush();.Chrome(或连接或某物)也可能很慢,因此当连接关闭时,页面尚未加载.我不知道为什么会这样.
这是偏执的程序员回答:
<?php
// ... your code
flush();
ob_flush();
sleep(2);
exit(0);
?>
Run Code Online (Sandbox Code Playgroud)
在您的情况下,可能是脚本超时的情况.我不确定为什么它应该只影响你,但它可以在一堆竞争条件下完成?这是一个彻头彻尾的猜测.您应该能够通过延长脚本执行时间来测试它.
<?php
// ... your while code
set_time_limit(30);
// ... more while code
?>
Run Code Online (Sandbox Code Playgroud)
它也可能像您需要更新Chrome安装一样简单(因为此问题是特定于Chrome的).
更新:当PHP(在同一本地主机上)输出缓冲时抛出致命错误时,我能够复制此错误(最后).我认为输出被严重损坏而没有多大用处(标题但很少或没有内容).
具体来说,我意外地让我的代码递归调用自己直到PHP,正确地放弃了.因此,服务器没有发送终端0长度的块 - 这是我之前发现的问题.
Sim*_*fie 27
我有这个问题.在尝试了这个问题上的大多数其他答案之后追踪它.它是由所有者和权限引起的/var/lib/nginx,更具体地说是/var/lib/nginx/tmp目录不正确.
fast-cgi使用tmp目录在生成响应时缓存响应,但前提是它们超过特定大小.因此问题是间歇性的,只有在生成的响应很大时才会发生.
检查nginx <host_name>.error_log是否有权限问题.
要修复,请确保/var/lib/nginx所有子组和所有子目录都是nginx.
twi*_*ejr 17
以下内容应该为每个客户端修复它.
//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));
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,以下是一个更好的选择并修复它:
的.htaccess:
php_value opcache.enable 0
Run Code Online (Sandbox Code Playgroud)
小智 14
如果您可以在本地主机中获得正确的响应并获得此错误类型的错误,并且如果您正在使用nginx.
转到服务器并使用以下命令打开 nginx.conf:
纳米等/nginx/nginx.conf
在 http 块中添加以下行:
proxy_buffering 关闭;
保存并退出文件
这解决了我的问题
use*_*125 10
天啊,5分钟前我遇到了同样的问题.我花了几个小时才找到解决方案.乍一看,在Windows上禁用防病毒解决了问题.但后来我注意到其他没有杀毒软件的Linux电脑上的问题.nginx日志中没有错误.我uwsgi展示了一些关于"破管"但不是所有要求的东西.知道什么?设备上没有剩余空间,我在数据库日志上重新启动服务器时发现了这个空间,并df批准了这一点.只解释为什么防病毒被解决这个问题就是它会阻止浏览器缓存(它应该检查每个请求),但是有一些奇怪行为的浏览器可以简单地忽略错误响应并显示缓存响应.
在我的情况下,我/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 再次创建它。
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186675 次 |
| 最近记录: |