После некоторых исследований мы выяснили, в чем проблема. Протокол HTTP2
более строг в своем синтаксисе, чем HTTP1.1
. Например, он не допускает тело для ответов 204
или 304
. Логично, что эти ответы не должны содержать тела, но HTTP1.1
не требовал сбоя этих "странных" ответов, в то время как HTTP2
требует, чтобы клиент не принимал такой ответ.
Мы также нашли из-за того, что, хотя у нас не было тела или content-length
заголовка, у нас был заголовок content-type
, который браузер также не принимает, в то время как logi c для HTTP1.1
просто игнорировал этот заголовок.
Я не нашел много информации об этом на Inte rnet вообще. Самым близким был HTTP2 RF C, и даже он был немного расплывчатым в деталях. В нем прямо не говорится, что ответ 304
с заголовком content-type
должен быть отклонен, но я предполагаю, что именно так браузеры реализовали его в реальности.
TLDR: * 1022 Ответы *
204
и 304
не могут содержать тело, заголовок content-length
или content-type
. Такие ответы будут рассматриваться браузером (и, возможно, другими клиентами) как сетевая ошибка.
PS Вероятно, существуют аналогичные ограничения для других кодов ответов
PPS Престижность Мортен Кулс , который провел оригинальное исследование топи c