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请求返回结果为404问题

AJAX 到 MySQL WHERE IN ($_GET) 请求。排除某些结果

如何知道 jquery $.get ajax 调用何时完成?

Ajax等待返回结果时,

Ajax等待返回结果时,

关于$.ajax()、$.get()、$.post()获取return值得问题