asp.net - XHR 请求时随机出现 ERR_SPDY_PROTOCOL_ERROR

标签 asp.net .net reactjs google-chrome haproxy

发布后,我们开始在生产应用程序中获得完全随机的 ERR_SPDY_PROTOCOL_ERROR。当我们得到它时,我们刷新浏览器几次,错误就消失了。我们无法真正重现该错误,但我们已经成功捕获了错误发生时的详细 chrome net 日志。下面是失败的请求的详细信息。

我希望有人对此提供反馈或帮助,因为这是我希望我不是开发人员的问题之一,如果你明白我的意思的话......

附注涉及到的技术都标注在这里了。我们在前端使用react,在后端使用asp.net/servicestack。我们使用 haproxy 作为负载均衡器。我们只能通过 chrome 看到这个错误。

89365: URL_REQUEST https://api-domain.com/some/path?page=1&pageSize=10 Start Time: 2019-01-15 11:11:15.029 t=255420 [st=    0] +REQUEST_ALIVE [dt=10068]
                     --> priority = "MEDIUM"
                     --> url = "https://api-domain.com/some/path?page=1&pageSize=10" t=255421 [st=    1]    NETWORK_DELEGATE_BEFORE_URL_REQUEST  [dt=0] t=255421 [st=    1] 
+URL_REQUEST_START_JOB  [dt=10066]
                       --> load_flags = 17216 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | MAYBE_USER_GESTURE)
                       --> method = "GET"
                       --> url = "https://api-domain.com/some/path?page=1&pageSize=10" t=255421 [st=    1]      NETWORK_DELEGATE_BEFORE_START_TRANSACTION  [dt=0] t=255421 [st=    1]      HTTP_CACHE_GET_BACKEND  [dt=0] t=255421 [st=    1]     HTTP_CACHE_OPEN_ENTRY  [dt=0] t=255421 [st=    1]      HTTP_CACHE_ADD_TO_ENTRY  [dt=0] t=255421 [st=    1]      HTTP_CACHE_READ_INFO  [dt=0] t=255421 [st=    1]    
+HTTP_STREAM_REQUEST  [dt=0] t=255421 [st=    1]        HTTP_STREAM_JOB_CONTROLLER_BOUND
                           --> source_dependency = 89366 (HTTP_STREAM_JOB_CONTROLLER) t=255421 [st=    1]        HTTP_STREAM_REQUEST_BOUND_TO_JOB
                           --> source_dependency = 89367 (HTTP_STREAM_JOB) t=255421 [st=    1]     -HTTP_STREAM_REQUEST t=255421 [st=    1]     +HTTP_TRANSACTION_SEND_REQUEST  [dt=1] t=255421 [st=    1]        HTTP_TRANSACTION_HTTP2_SEND_REQUEST_HEADERS
                           --> :authority: api-domain.com
                               :method: GET
                               :path: /some/path?page=1&pageSize=10
                               :scheme: https
                               accept: application/json, text/plain, */*
                               accept-encoding: gzip, deflate, br
                               accept-language: en-US,en;q=0.9,el;q=0.8
                               origin: https://some-other-path.com
                               referer: https://some-other-path.com/
                               user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
                               x-somekey: random-guid t=255422 [st=    2]     -HTTP_TRANSACTION_SEND_REQUEST t=255422 [st=    2]    
+HTTP_TRANSACTION_READ_HEADERS  [dt=10065] t=265487 [st=10067]        HTTP2_STREAM_ERROR
                           --> description = "Server reset stream."
                           --> net_error = "ERR_SPDY_PROTOCOL_ERROR"
                           --> stream_id = 3 t=265487 [st=10067]     -HTTP_TRANSACTION_READ_HEADERS
                         --> net_error = -337 (ERR_SPDY_PROTOCOL_ERROR) t=265487 [st=10067]   -URL_REQUEST_START_JOB
                       --> net_error = -337 (ERR_SPDY_PROTOCOL_ERROR) t=265488 [st=10068]    URL_REQUEST_DELEGATE_RESPONSE_STARTED  [dt=0] t=265488 [st=10068] -REQUEST_ALIVE
                     --> net_error = -337 (ERR_SPDY_PROTOCOL_ERROR)

最佳答案

考虑到问题是从 2015 年开始的,简短的答案是禁用 SPDY 或 HTTP/2。

客户端可能是 Chrome,因为它是当时唯一支持这些协议(protocol)的浏览器。

如果服务器接受 HTTP/2 但实现已损坏并崩溃,则可能是服务器中的错误;或者如果在服务器不接受时尝试提升到 HTTP/2,则可能是 Chrome 中的错误支持HTTP/2。

请注意,SPDY 已不存在,它已被 HTTP/2 取代。不过,错误代码仍名为 ERR_SPDY_PROTOCOL_ERROR

关于asp.net - XHR 请求时随机出现 ERR_SPDY_PROTOCOL_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195830/

相关文章:

c# - 使用 ffmpeg 在 c# asp.net 中合并视频

c# - 在 ApiController 操作中获取当前用户,而不将用户 ID 作为参数传递

.net - 在每个文件的 list 中哪里可以看到哈希值?

javascript - 当我发布到 github 中的自定义域时,React Router 不呈现路径 ='/'

reactjs - Redux 操作类型是 PROBE_UNKNOWN_ACTION

c# - 使用 anchor 指向谷歌地图上的位置

c# - 使用 Entity Framework 从存储过程中获取数据

asp.net - 在哪些情况下 HttpResponse.SupportsAsyncFlush 返回 false

c# - Azure WebJobs 未找到函数

reactjs - 是 React MVVM 框架吗?