Ajax GET 结果由“ERR_INCOMPLETE_CHUNKED_ENCODING”和“XMLHttpRequest: Network Error 0x800c0007”突然出现
Posted
技术标签:
【中文标题】Ajax GET 结果由“ERR_INCOMPLETE_CHUNKED_ENCODING”和“XMLHttpRequest: Network Error 0x800c0007”突然出现【英文标题】:Ajax GET results by an "ERR_INCOMPLETE_CHUNKED_ENCODING" and "XMLHttpRequest: Network Error 0x800c0007" suddenly 【发布时间】:2018-08-31 23:45:01 【问题描述】:我的客户端具有以下拓扑:
User <--> Apache <--> TomCat <--> JBossAS7 <--> Mule
Mule 需要与另一个域上的另一个服务器通信,以检索用户询问的信息。此通信使用 HTTPS,并且证书在 Mule 的信任中。因此,Mule 和其他服务器能够创建 SSL 连接。
这是用于执行用户想要的 ajax 请求:
$.ajax(
url : DS.nav.importDS,
data : data,
type : "GET",
cache : false,
success : function(html)
//do some stuff
,
error:function (error)
//do some stuff
);
(jquery 版本:1.7.1)
关于响应标头:
缓存控制:max-age=0、无缓存、无存储、必须重新验证 缓存控制:无缓存 连接:保持活动状态 内容类型:text/html;charset=UTF-8 保持活动状态:超时=5,最大值=100此 GET 请求返回 HTML 内容。
我的问题如下:
此请求在没有警告的情况下停止工作。 在 Chrome(使用的版本:65.0.3325.162)上,几分钟后我在控制台中收到以下错误消息:“ERR_INCOMPLETE_CHUNKED_ENCODING.”。没有与实时保护杀毒软件的链接。
在 Edge 上,“XMLHttpRequest:网络错误 0x800c0007,没有可用于请求的资源的数据”。
但是,它在 IE 上运行。我认为 IE 比 Chrome 或 Edge 更宽松。但我想明白为什么。
我不是在寻找完美的答案,而是寻找任何可以让我了解正在发生的事情的想法。
编辑
在 Chrome 上 - 状态码:200 OK - 时间:注意:请求尚未完成! (内容下载后)
编辑 通过使用 chrome://net-export 工具,这是 HTTP 请求的结果:
t=203357 [st= 2948] HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 200 OK
Date: Fri, 23 Mar 2018 14:44:16 GMT
Server: Apache-Coyote/1.1
X-Frame-Options: SAMEORIGIN
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
X-Frame-Options: SAMEORIGIN
X-UA-Compatible: IE=9,chrome=1
Content-Type: text/html;charset=UTF-8
Content-Language: en
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Cache-Control: no-cache
X-Via-NSCOPI: 1.0
Transfer-Encoding: chunked
t=203357 [st= 2948] -HTTP_TRANSACTION_READ_HEADERS
t=203357 [st= 2948] HTTP_CACHE_WRITE_INFO [dt=0]
t=203357 [st= 2948] +URL_REQUEST_DELEGATE [dt=4]
t=203358 [st= 2949] DELEGATE_INFO [dt=3]
--> delegate_blocked_by = "extension ModHeader"
t=203361 [st= 2952] -URL_REQUEST_DELEGATE
t=203361 [st= 2952] -URL_REQUEST_START_JOB
t=203361 [st= 2952] URL_REQUEST_DELEGATE [dt=1]
t=203362 [st= 2953] HTTP_TRANSACTION_READ_BODY [dt=0]
t=203362 [st= 2953] URL_REQUEST_JOB_FILTERED_BYTES_READ
--> byte_count = 12971
t=203363 [st= 2954] HTTP_TRANSACTION_READ_BODY [dt=313130]
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
t=516493 [st=316084] FAILED
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
t=516495 [st=316086] -REQUEST_ALIVE
--> net_error = -355 (ERR_INCOMPLETE_CHUNKED_ENCODING)
更新
我已禁用 javascript,并直接在 URL 中输入我的请求,结果已显示,但页面仍在 5 分钟内加载。
【问题讨论】:
在您应该拥有的 4+ 日志之一中没有任何线索? 在不同的服务器中不存在错误日志(并且请求结果由 HTTP 200 OK...) 也许一些超时即将到期,看看这个关于类似问题的答案***.com/a/43694816/15710 【参考方案1】:已解决
错误是由于 Lazy Load 插件 (1.9.3) https://appelsiini.net/projects/lazyload/ 的 vanilla JavaScript 版本引起的
最后一个 Chrome 版本、最后一个 IE 版本和最后一个 Firefox 版本不支持它。
我已经停止使用这个插件,但我想最后一个版本可以在不同版本的 Chrome、IE 和 Firefox 中使用。
【讨论】:
【参考方案2】:原因可能是您的防病毒软件。测试此方案
-
请关闭防病毒软件 (Avast/Kaspersky) 并进行测试。
检查是否可能是 Chrome 版本问题。据我所知,这是这些版本对
正在发送的块的内容长度和表示的大小
那个块(我可能离那个很远)。总之有点
不完美的标题问题。
可能是Linux环境的所有者和权限造成的
【讨论】:
不是因为我的杀毒软件。我试图在标题中设置内容长度,不幸的是(或幸运的是?),我们不能这样做。我还在调查这件事。关于所有者和权限,我会向我的客户提出请求,但我不明白如果它是由此引起的,那么该请求如何在 IE 和 Firefox 上工作。以上是关于Ajax GET 结果由“ERR_INCOMPLETE_CHUNKED_ENCODING”和“XMLHttpRequest: Network Error 0x800c0007”突然出现的主要内容,如果未能解决你的问题,请参考以下文章
AJAX 到 MySQL WHERE IN ($_GET) 请求。排除某些结果