PHP все HTTP-заголовки переводит в верхний регистр?

Первый раз столкнулся, подтвердите мою страшную догадку, пожалуйста.

Клиент шлет на веб-сервер запрос с кастомным заголовком «X-The-Header: The Value». Apache видит название заголовка в таком же виде, а PHP — как X_THE_HEADER.

PHP всегда преобразует названия заголовков к верхнему регистру и заменяет дефисы на символы подчеркивания? Я не смог найти это в документации, ткните носом, пожалуйста.
  • Вопрос задан
  • 3556 просмотров
Решения вопроса 1
@ChemAli Автор вопроса
Прямого описания не нашел, но документация PHP говорит, что глобальная переменная $_SERVER заполняется в соответствии со спецификацией CGI1.1 (RFC 3875), которая гласит, что

Meta-variables with names beginning with «HTTP_» contain values read from the client request header fields, if the protocol used is HTTP. The HTTP header field name is converted to upper case, has all occurrences of "-" replaced with "_" and has «HTTP_» prepended to give the meta-variable name.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AloneCoder
@AloneCoder
[object Object]
Согласно RFC 2616, «Hypertext Transfer Protocol — HTTP/1.1», §4.2, «Message Headers»: имя заголовка регистронезависимо
Об этом вскользь упоминается в комментариях на php.net
Ответ написан
Комментировать
AmdY
@AmdY
PHP и прочие вебштучки
А как вы смотрите посланные заголовки? эта функция www.php.net/manual/ru/function.apache-request-headers.php оставляет всё как есть
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы