【问题标题】:AJAX requests are being cancelled after HTTP_STREAM_PARSER_READ_HEADERS在 HTTP_STREAM_PARSER_READ_HEADERS 之后取消 AJAX 请求
【发布时间】:2016-04-03 22:52:47
【问题描述】:

我的 XMLHttpRequests 正在被取消,但似乎仍然可以成功工作(数据到达服务器)。另一个问题建议调查 chrome 事件是有原因的,它似乎在 HTTP_STREAM_PARSER_READ_HEADERS 之后立即取消了

这是请求事件,以及关于可能导致此问题的原因的见解,或者我可以尝试进一步的故障排除?:

t=1125 [st= 0] +REQUEST_ALIVE [dt=250]
t=1125 [st= 0] URL_REQUEST_DELEGATE [dt=0]
t=1125 [st= 0] +URL_REQUEST_START_JOB [dt=250]
--> load_flags = 33024 (MAYBE_USER_GESTURE | VERIFY_EV_CERT)
--> method = "PUT"
--> priority = "LOW"
--> upload_id = "0"
--> url = [Redacted]
t=1125 [st= 0] +URL_REQUEST_DELEGATE [dt=1]
t=1125 [st= 0] DELEGATE_INFO [dt=1]
--> delegate_info = "extension Tampermonkey"
t=1126 [st= 1] -URL_REQUEST_DELEGATE
t=1126 [st= 1] HTTP_CACHE_GET_BACKEND [dt=0]
t=1126 [st= 1] HTTP_CACHE_OPEN_ENTRY [dt=0]
t=1126 [st= 1] HTTP_CACHE_ADD_TO_ENTRY [dt=0]
t=1126 [st= 1] HTTP_CACHE_READ_INFO [dt=0]
t=1126 [st= 1] URL_REQUEST_DELEGATE [dt=0]
t=1126 [st= 1] +HTTP_STREAM_REQUEST [dt=198]
t=1126 [st= 1] HTTP_STREAM_REQUEST_STARTED_JOB
--> source_dependency = 82675 (HTTP_STREAM_JOB)
t=1324 [st=199] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 82675 (HTTP_STREAM_JOB)
t=1324 [st=199] -HTTP_STREAM_REQUEST
t=1324 [st=199] +HTTP_TRANSACTION_SEND_REQUEST [dt=0]
t=1324 [st=199] HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> PUT /users/[Redacted] HTTP/1.1
Host: [Redacted]
Connection: keep-alive
Content-Length: 4545
X-NewRelic-ID: UwUDUlFADQEGUlFb
Origin: [Redacted]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Content-Type: application/json
Accept: /
X-Requested-With: XMLHttpRequest
Referer: [Redacted]
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: [1850 bytes were stripped]
t=1324 [st=199] HTTP_TRANSACTION_SEND_REQUEST_BODY
--> did_merge = false
--> is_chunked = false
--> length = 4545
t=1324 [st=199] -HTTP_TRANSACTION_SEND_REQUEST
t=1324 [st=199] +HTTP_TRANSACTION_READ_HEADERS [dt=51]
t=1324 [st=199] +HTTP_STREAM_PARSER_READ_HEADERS [dt=51]
t=1374 [st=249] CANCELLED
t=1375 [st=250] -URL_REQUEST_START_JOB
--> net_error = -3 (ERR_ABORTED)
t=1375 [st=250] URL_REQUEST_DELEGATE [dt=0]
t=1375 [st=250] -REQUEST_ALIVE

【问题讨论】:

  • 我的猜测是您的响应标头搞砸了
  • 遗憾的是我无法控制响应。有类似的要求,不是我自己提出的,但我已经尽我所能模仿它们。
  • @DouglasGaskell 你有解决方案吗?
  • @AdarshKonchady 遗憾的是我没有,请求仍在被取消,但无论如何都会根据我的请求进行更改。我选择联系我正在修改的服务的开发人员,等待回复(可能需要几个月才能知道他们的工单周转时间)。
  • 我遇到了同样的错误。我才知道为什么。在我使用“JQuery”的 AJAX 调用中,指定了 3000 毫秒的“超时”。因此,任何超过 3000 毫秒的请求都会被自动取消。 PS:即使在我的情况下,请求也会在 HTTP_STREAM_PARSER_READ_HEADERS 之后被取消。

标签: javascript ajax xmlhttprequest


【解决方案1】:

我在chrome://net-internals/#events 中遇到了同样的错误。就我而言,AJAX 请求采用以下形式: $.ajax({ ... timeout: 3000 // coming dynamically in my case ...}); 因此,所有超过 3000 毫秒的请求都会被自动取消。

现在,您的解决方案取决于您的应用程序,您是想增加客户端的超时时间还是改善服务器端的服务。

【讨论】:

    【解决方案2】:

    我们遇到了同样的问题。最后发现 AJAX 请求(来自 UI 代码)错误地将超时设置为 3 秒而不是 30 秒。更新超时修复了问题

    【讨论】:

      【解决方案3】:

      在我的情况下,正在执行相同的请求 TWICE(来自代码中的其他位置)。因此,第二个请求取消了第一个请求,但由于第二个请求成功,因此数据可以从服务器返回。嘘!!!

      【讨论】:

        猜你喜欢
        • 2022-10-24
        • 1970-01-01
        • 2012-01-10
        • 2019-08-08
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多