好的,伙计们,在这里回答我自己的问题,但我找到了解决方案。
我正在使用由@BalusC编写的自定义文件 servlet;问题就在这里
以下是我的发现:
- 使用
Content-Encoding: gzip
和的组合时会出现此问题Content-Range
- 产生的错误是:
ERR_INCOMPLETE_CHUNKED_ENCODING
- 我首先决定禁用这个过滤器并让tomcat
DefaultServlet
处理它......问题消失了
- 作为一名程序员,我必须知道为什么。
- 我仍然没有确切的原因,但我认为是因为 gzip 无法用长度准确表示
该规范Content-Range
还指出:
Content-Range 实体标头与部分实体主体一起发送,以指定应在完整实体主体中应用部分主体的位置。范围单位在第 3.12 节中定义。
在代码中,即使它是完整的响应,它也会被发送:
if (ranges.isEmpty() || ranges.get(0) == full) {
// Return full file.
Range r = full;
response.setContentType(contentType);
response.setHeader("Content-Range", "bytes " + r.start + "-" + r.end + "/" + r.total);
if (content) {
// .....
我删除了那条线,一切又开始工作了!我真的很希望有人能参与进来,并可能给出更好的解释。
这是chrome://net-internals/
失败文件的输出:
t = 3740 [st = 38] -HTTP_STREAM_REQUEST
t= 3740 [st= 38] +HTTP_TRANSACTION_SEND_REQUEST [dt=0]
t = 3740 [st = 38] HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> GET /Core/resources/scripts/scriptaculous/dragdrop.js?t=1461139610 HTTP/1.1
主机:本地主机:8080
连接:保持活动
Pragma:无缓存
缓存控制:无缓存
接受: */*
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
DNT: 1
参考:http://localhost:8080/Core/Dashboard?componentID=VCmq3c
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8,af;q=0.6
Cookie:[306 字节被剥离]
t = 3740 [st = 38] -HTTP_TRANSACTION_SEND_REQUEST
t= 3740 [st= 38] +HTTP_TRANSACTION_READ_HEADERS [dt=4]
t= 3740 [st= 38] HTTP_STREAM_PARSER_READ_HEADERS [dt=4]
t = 3744 [st = 42] HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 200 OK
服务器:Apache-Coyote/1.1
内容处置:内联;文件名="dragdrop.js"
接受范围:字节
ETag:dragdrop.js_19250_1461136271305
最后修改时间:2016 年 4 月 20 日星期三 07:11:11 GMT
过期:2016 年 4 月 27 日星期三 08:06:51 GMT
内容范围:字节 0-19249/19250
内容类型:应用程序/javascript
传输编码:分块
变化:接受编码
日期:格林威治标准时间 2016 年 4 月 20 日星期三 08:06:50
t = 3744 [st = 42] -HTTP_TRANSACTION_READ_HEADERS
t= 3744 [st= 42] HTTP_CACHE_WRITE_INFO [dt=56]
t= 3800 [st= 98] HTTP_CACHE_WRITE_DATA [dt=0]
t= 3800 [st= 98] HTTP_CACHE_WRITE_INFO [dt=1]
t = 3801 [st = 99] URL_REQUEST_DELEGATE [dt = 0]
t = 3801 [st = 99] -URL_REQUEST_START_JOB
t = 3801 [st = 99] URL_REQUEST_DELEGATE [dt = 0]
t= 3801 [st= 99] HTTP_TRANSACTION_READ_BODY [dt=0]
t= 3801 [st= 99] HTTP_CACHE_WRITE_DATA [dt=1]
t = 3802 [st = 100] URL_REQUEST_JOB_BYTES_READ
--> 字节数 = 3683
t= 3802 [st= 100] HTTP_TRANSACTION_READ_BODY [dt=0]
t= 3802 [st= 100] HTTP_CACHE_WRITE_DATA [dt=0]
t = 3802 [st = 100] URL_REQUEST_JOB_BYTES_READ
--> 字节数 = 13982
t= 3802 [st= 100] HTTP_TRANSACTION_READ_BODY [dt=20365]
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
t=24167 [st=20465] 失败
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
t=24168 [st=20466] -REQUEST_ALIVE
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
最后,这里有一些对我很有帮助的链接,去年春天似乎也遇到了同样的问题。
我仍然无法弄清楚为什么这会在运行多年后随机启动,并且非常感谢任何输入。