ERR_SPDY_PROTOCOL_ERROR случайно по запросу XHR - PullRequest
0 голосов
/ 15 января 2019

После выпуска мы начали получать совершенно случайную ошибку ERR_SPDY_PROTOCOL_ERROR в нашем производственном приложении. Когда мы его получим, мы несколько раз обновим браузер, и ошибка исчезнет. Мы не можем воспроизвести ошибку, но нам удалось получить подробный журнал Chrome Net, как это происходит. Там детали запроса, где он терпит неудачу ниже.

Мне бы хотелось, чтобы кто-то отзывался или помогал по этому вопросу, поскольку это одна из тех проблем, которую я хотел бы не быть разработчиком, если вы понимаете, о чем я ...

P.S. Все задействованные технологии помечены здесь. Мы используем ответ на веб-интерфейсе и asp.net / servicestack на серверной части. Мы используем haproxy в качестве нашего балансировщика нагрузки. Мы видим эту ошибку только через хром.

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)

1 Ответ

0 голосов
/ 29 июля 2019

Учитывая, что вопрос с 2015 года, короткий ответ должен был отключить SPDY или HTTP / 2.

Возможно, клиентом был Chrome, поскольку в то время это был единственный браузер, поддерживающий эти протоколы.

Это может быть ошибка на сервере, если он принимает HTTP / 2, но реализация не работает и происходит сбой, или это может быть ошибкой в ​​Chrome, если он пытается перейти на HTTP / 2, когда сервер этого не делает поддержка HTTP / 2.

Обратите внимание, что SPDY больше не существует, его заменили HTTP / 2. Код ошибки по-прежнему называется ERR_SPDY_PROTOCOL_ERROR.

...