Поле заголовка ответа 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 перед доступом к сломанной библиотеке кэширования.