Re: Не передаётся значение дополнительного заголовка в fastcgi
Maxim Dounin
mdounin at mdounin.ru
Mon Feb 24 23:09:07 UTC 2014
Hello!
On Tue, Feb 25, 2014 at 12:39:53AM +0400, Александр Кунич wrote:
> Система debian squeeze
> nginx 1.4.5 из репозиториев дебиан
>
> Клиент передаёт серверу в заголовках запроса дополнительный параметр
> API_KEY. Необходимо передать его в $_SERVER['HTTP_API_KEY']
> Прописал в fastcgi_params следующее
>
> fastcgi_param HTTP_API_KEY $http_api_key;
>
> $_SERVER['HTTP_API_KEY'] при этом появляется, но пустой, хотя в заголовке
> запроса этот параметр не пуст.
> Но вот что интересно. Если заменить имя заголовка с API_KEY на API-KEY, то
> всё работает как надо.
> Это ошибка или так специально для чего-то задумано? Просто переименовать
> этот параметр сейчас уже затруднительно, т.к. приложением многие уже
> пользуются.
Так задумано. Заголовки API_KEY и API-KEY разные, но в рамках
принятой в CGI логики (а равно переменных в конфигах nginx'а)
представления заголовков неотличимы друг от друга, т.к. "-" и "_"
становятся "_". Поэтому nginx по умолчанию заголовки с символом
подчёркивания считает некорректными и игнорирует.
Если очень надо, такие заголовки можно разрешить с помощью
директивы underscores_in_headers. Но следует понимать, что это
может вылезти боком в других местах. Подробнее тут:
http://nginx.org/r/underscores_in_headers/ru
И да, явно указывать "fastcgi_param HTTP_API_KEY" - не нужно, все
заголовки запроса по умолчанию передаются в fastcgi как HTTP_*
параметры. Ваша проблема именно в том, что заголовок содержит
подчёркивание и из-за этого игнорируется.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru