Например, происходит следующий сценарий:
- Я захожу на сайт по протоколу HTTPS
- Моя лента Twitter интегрирована через https ://publish.twitter.com вообще не загружается
- Я вижу в консоли ERR_HTTP2_PROTOCOL_ERROR
- Если я удалю код загрузки ленты Twitter, ошибка останется
- Если я захожу на сайт по HTTP, появляется канал Twitter и ошибка исчезает
(Примечание: я пробовал с Safari, и у меня аналогичная ошибка kcferrordomaincfnetwork 303)
Мне было интересно, может ли это быть связано с заголовком, возвращаемым сервером, поскольку в ошибке есть упоминание «200», а страница 404/500 ничего не запускает.
Дело в том, что ошибка вообще не задокументирована. Поиск Google дает мне очень мало результатов. Более того, я заметил, что он появляется в самых последних выпусках Google Chrome; ошибка не появляется в версии 64.X, но появляется в версии 75+ (независимо от ОС; хотя я работаю на Mac).
Может быть связано с тем, что веб-сайт в порядке в Firefox, но не в Safari (ошибка kCFErrorDomainCFNetwork 303), ни в Chrome (net::ERR_SPDY_PROTOCOL_ERROR)
Выводы дальнейшие исследования показали следующее:
- ошибка не появляется на той же странице, если сервер возвращает 404 вместо 2XX< /li>
ошибка не появляется локально с сертификатом HTTPS - ошибка появляется на другом сервере (оба являются OVH), который использует другой сертификат< /li>
ошибка появляется независимо от используемой версии PHP: от 5.6 до 7.3 (используемая платформа: Cakephp 2.10)

Заголовок Google Chrome (с ошибкой):
[img]https://i.sstatic .net/0wCrD.png[/img]
Заголовок Firefox (без ошибок):

Запрос Curl --head --http2 в консоли возвращает следующий успех:
Код: Выделить всё
HTTP/2 200
date: Fri, 04 Oct 2019 08:04:51 GMT
content-type: text/html; charset=UTF-8
content-length: 127089
set-cookie: SERVERID31396=2341116; path=/; max-age=900
server: Apache
x-powered-by: PHP/7.2
set-cookie: xxxxx=0919c5563fc87d601ab99e2f85d4217d; expires=Fri, 04-Oct-2019 12:04:51 GMT; Max-Age=14400; path=/; secure; HttpOnly
vary: Accept-Encoding
Код: Выделить всё
t=123354 [st=5170] HTTP2_SESSION_RECV_RST_STREAM
--> error_code = "2 (INTERNAL_ERROR)"
--> stream_id = 1
[...]
Возможно, что к моменту прохождения RST_STREAM от клиента к серверу все содержимое запроса находится в пути и дойдет до клиента, который, однако, его отбросит. , для большого содержимого ответа отправка RST_STREAM может иметь хорошие шансы поступить на сервер до того, как будет отправлено все содержимое ответа, и, следовательно, сэкономит полосу пропускания."
The описанное поведение такое же, как то, которое я наблюдаю. Но это означало бы, что виноват браузер, и тогда я бы не понял, почему это происходит на двух одинаковых страницах, одна из которых имеет заголовок 200, а другая 404 (то же самое произойдет, если я отключу JS).
Подробнее здесь: https://stackoverflow.com/questions/582 ... rror-about
Мобильная версия