标签: chunked

Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误

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

net::ERR_INCOMPLETE_CHUNKED_ENCODING
Run Code Online (Sandbox Code Playgroud)

症状:

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

服务器环境:

  • Apache 2.2.22
  • PHP
  • Ubuntu的

在我们内部的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分钟.然后它返回.

php apache google-chrome chunked chunked-encoding

116
推荐指数
7
解决办法
19万
查看次数

如何在客户端编写javascript以及时接收和解析`chunked`响应?

我正在使用play框架来生成分块响应.代码是:

class Test extends Controller {
    public static void chunk() throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            String data = repeat("" + i, 1000);
            response.writeChunk(data);
            Thread.sleep(1000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用浏览器访问时http://localhost:9000/test/chunk,我可以看到显示的数据每秒都在增加.但是,当我编写一个javascript函数来接收和处理数据时,发现它将阻塞直到收到所有数据.

代码是:

$(function(){
    $.ajax(
        "/test/chunked", 
        {
            "success": function(data, textStatus, xhr) {
                alert(textStatus);
            }
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

收到所有数据后,我可以看到10秒后弹出一个消息框.

如何获取流并及时处理数据?

ajax chunked

35
推荐指数
2
解决办法
2万
查看次数

分块编码和内容长度标头

是否可以设置内容长度标头并使用分块传输编码?这样做是否解决了在使用chunked时不知道客户端响应长度的问题?

我正在考虑的情况是当你有一个大文件要传输时,确定它的大小没有问题,但它太大而无法完全缓冲.(如果你没有使用chunked,那么整个响应必须首先得到缓冲?对吗?)

谢谢.

encoding http chunked transfer

23
推荐指数
2
解决办法
2万
查看次数

multipart和chunked协议之间的区别

有些专家可以解释两者之间的差异吗?是不是chunked是一个流协议而多部分不是?使用multipart有什么好处?

http chunked chunked-encoding http-chunked

18
推荐指数
2
解决办法
1万
查看次数

在服务器端处理plupload的分块上传

当我使用plupload来块文件(设置选项chunk_size)时,我会为每个块获得一个单独的PHP请求.查看$_FILES变量,每个块都是类型"application/octet-stream".

有没有简单,标准和舒适的方法如何在服务器端将这些部分组合在一起?

保证理智(例如,当其中一件丢失时等).

php file-upload chunked plupload

15
推荐指数
2
解决办法
4万
查看次数

为什么Tomcat会将HEAD和GET请求的不同标头返回给我的RESTful API?

我最初的目的是验证HTTP分块传输.但不小心发现了这种不一致.

API旨在将文件返回给客户端.我用它HEADGET方法来对付它. 返回不同的标头.

因为GET,我得到这些标题:(这是我的预期.)

传输编码:分块,没有内容长度.

对于HEAD,我得到这些标题:

内容长度:1017118720,无转移编码.

根据这个线程,HEAD并且GET 应该返回相同的标题,但不一定.

我的问题是:

如果Transfer-Encoding: chunked使用,因为该文件是动态反馈给客户端和Tomcat服务器无法知道它的大小提前,怎么可能Tomcat的知道Content-Length何时HEAD使用哪种方法?Tomcat只是干运行处理程序并计算所有文件字节?为什么不简单地返回相同的Transfer-Encoding: chunked标题?

下面是我使用Spring Web MVC实现的RESTful API :

@RestController
public class ChunkedTransferAPI {

    @Autowired
    ServletContext servletContext;

    @RequestMapping(value = "bootfile.efi", method = { RequestMethod.GET, RequestMethod.HEAD })
    public void doHttpBoot(HttpServletResponse response) {

        String filename = "/bootfile.efi";
        try {
            ServletOutputStream output …
Run Code Online (Sandbox Code Playgroud)

http chunked http-method tomcat8

13
推荐指数
1
解决办法
1025
查看次数

如何在Varnish中禁用"Transfer-Encoding:chunked"编码?

使用Varnish 4,我有一组后端,它们响应有效的Content-Length标头而没有Transfer-Encoding标头.

在客户端的第一次点击中,Varnish正在删除Content-Length标题并添加Transfer-Encoding: chunked到响应中,而不是使用这些标头响应客户端.(有趣的是,有效载荷似乎没有任何块 - 它是一个连续的有效载荷).

这会给像Flash视频播放器这样的客户端造成严重问题,这些客户端正试图根据Content-Length标头进行分段大小,带宽等分析.他们的分析失败了,他们不能做多比特流等等.

我尝试过一些半明显的事情,比如:

  • beresp.do_stream = true
  • beresp.do_gzip = false
  • unset req.http.Accept-Encoding

示例后端响应:

HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 19:44:35 GMT
Server: Apache
Content-Length: 796618
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

样品清漆响应:

HTTP/1.1 200 OK
Server: Apache
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 23:10:06 GMT
X-Varnish: 2
Age: 0
Transfer-Encoding: chunked
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

对象的后续加载包括Content-Length …

http chunked varnish transfer-encoding http-content-length

12
推荐指数
2
解决办法
1万
查看次数

HTTP 1.1 - 客户端是否可以请求传输不被"分块"?

HTTP 1.1客户端是否可以设置一个标头值,指示不应对请求的响应进行分块?或者是防止这种情况的唯一方法是发送HTTP 1.0请求?我试过谷歌搜索,但我能找到的方法是禁用HTTP 1.1服务器上的分块传输,所以我猜测它在客户端是不可能的,但我想我还是会问.

http http-1.1 chunked chunked-encoding http-chunked

10
推荐指数
1
解决办法
7192
查看次数

不完整的分块编码错误Chrome /特定PC

我们为客户开发各种网站,最近我们的一些"较重"网站遇到了一个奇怪的问题.

我们的几个Magento商店和另外一个基于PHP的网站在我的PC和1个客户端的PC上无法在Chrome和其他浏览器上加载控制台错误:

网:: ERR_INCOMPLETE_CHUNKED_ENCODING

此错误通常显示在各种JS文件中,例如:/js/magentothem/jquery-ui.js

在刷新时,您可以多次重现相同的错误,然后偶尔网站将加载正常.

如果您在单独的选项卡中打开JS文件,文件会在随机点(即未完全加载)中明显切断,但在多次刷新后将干净地加载.

它不仅仅是一个有问题的文件 - 它在JS文件之间有所不同 - 文件正确上传到服务器.

我们在办公室里有4台电脑,它只发生在我的电脑上,但也奇怪地在我们客户的一台机器上出现同样的错误.

我们都运行相同版本的Chrome(包括运行良好的机器).

调查后... - 如果我将网络电缆更改为以前连接到接收页面的PC的其他人之一,我仍然会收到错误

- 如果我将网络电缆和HotSpot断开连接到我的iPhone网络,网站加载正常!

我已经尝试在服务器上禁用所有形式的缓存,并检查错误日志,但都无济于事.

任何人都可以解释这个问题可能与什么有关?我确信这个错误与服务器无关 - 可能是我和我客户的PC之间的巧合,但问题是什么......

提前致谢

google-chrome magento chunked chunked-encoding

10
推荐指数
1
解决办法
2万
查看次数

有没有Android开发人员成功从Web服务接收分块传输协议?

我一直在努力处理几个类实现,以检索分块数据但没有成功.以下是一个有问题的简化代码模块.在网上浏览之后,过去似乎出现了问题(2009年,2010年;版本1.1,1.5),但现在应该解决这些问题.我没有看到Android平台对此协议有任何明确的成功.

救命!

如果我输入无效令牌,我能看到一些响应 - Web服务将响应应用程序错误消息.但是,有效的url和令牌只会响应检测到的chunked协议(isChunked()返回true),但没有任何内容被读取,也没有任何超时等等.

从命令行使用CURL发出的完全相同的URL按预期工作,并显示连续内容(来自Web服务的已发布数据).

是否存在任何Web服务端黑客,例如,添加更多行尾,强制接收流?

                URI uri;
                try {
                    uri = new URI("http://cws.mycompany.com/service/events?accesskeyid=8226f3ddc65a420abc391d8f1fe12de44766146762_1298174060748");
                    HttpClient httpClient=new DefaultHttpClient(); 
                    HttpGet httpGet=new HttpGet(uri); 
                    ResponseHandler<String> rh=new BasicResponseHandler(); 
                    String responseString=httpClient.execute(httpGet,rh); 
                    Log.d(TAG, "response as string:\n" + responseString);
                } catch (URISyntaxException e) {
                    Log.e(TAG, e.toString());
                    e.printStackTrace();
                } catch (ClientProtocolException e) {
                    Log.e(TAG, e.toString());
                    e.printStackTrace();
                } catch (IOException e) {
                    Log.e(TAG, e.toString());
                    e.printStackTrace();
                }
Run Code Online (Sandbox Code Playgroud)

android http chunked http-chunked

9
推荐指数
1
解决办法
5064
查看次数