Поле заголовка ответа HTTP/2 не в Pascal Case в Google Chrome

Я нажимаю один и тот же URL (не могу раскрыть URL из-за конфиденциальности клиента) в Google Chrome версии 55.0.2883.95 (64-разрядная версия) и версии Mozilla 50.1.0, но поля заголовка ответа в браузерах Google Chrome и Mozilla отличаются,

Ответ на Google Chrome:

HTTP/2 200 access-control-allow-origin: * кодировка контента: gzip тип контента: application/json;charset=UTF-8

Поля заголовка не в Pascal Case, но ответ на Mozilla:

HTTP/2 200 Access-Control-Allow-Origin: * Content-Encoding: gzip Content-Type: application/json;charset=UTF-8

Поля заголовка находятся в случае Паскаля.

Теперь я знаю, что согласно статье RFC2616, раздел 4.2 ( https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html - sec4.2), в которой говорится

"Каждое поле заголовка состоит из имени, за которым следует двоеточие (":") и значения поля. Имена полей не чувствительны к регистру."

Но мой клиент запускает некоторую пользовательскую библиотеку кэширования в своем приложении, которая начинает жаловаться, если заголовок Content-Encoding находится не в случае Pascal.

Любая идея о том, что может быть возможным исправить? Заранее спасибо:)

1 ответ

Решение

Спецификация HTTP/2 ясно говорит о том, что заголовки должны быть преобразованы в нижнее регистр перед кодированием.

По беспроводной связи оба браузера получают заголовки ответа в нижнем регистре в соответствии со спецификацией HTTP/2.

Похоже, что Chrome передает имена заголовков как есть на уровень приложения, в то время как Firefox пытается восстановить регистр Pascal, по крайней мере, для известных имен заголовков.

Вы можете подать проблему в любой браузер, но я сомневаюсь, что она будет решена.

Настоящая проблема заключается в неработающей библиотеке кэширования вашего клиента, которая должна учитывать тот факт, что имена заголовков HTTP с самого начала не чувствительны к регистру.

Что вы можете сделать, в зависимости от используемой вами технологии, это написать слой адаптера, который выполняет преобразование имен заголовков в Pascal перед доступом к сломанной библиотеке кэширования.

Другие вопросы по тегам