Nginx и uWSGI удаляют HTTP_AUTHORIZATION

Я работаю с API, и кажется, что Nginx и uWSGI удаляют заголовок HTTP_AUTHORIZATION, который я передаю.

Я отправляю curl POST на свой сервер API, на котором работает Django. Когда я заставляю Django распечатать список request.META, я вижу, что HTTP_AUTHORIZATION отсутствует.

Конфигурация Nginx содержит следующее:

uwsgi_pass_header HTTP_AUTHORIZATION;
uwsgi_pass_request_headers on;

Но выполнение этих двух проходов, похоже, не имеет никакого эффекта.

Любая идея, почему происходит это удаление... это происходит на уровне Nginx, уровне uWSGI или уровне Django?


person Christopher H    schedule 01.10.2012    source источник


Ответы (2)


Попробуйте изменить подчеркивание в HTTP_AUTHORIZATION на тире HTTP-AUTHORIZATION в вашем посте о завитке.

По умолчанию nginx помечает заголовки с подчеркиванием как недействительные и игнорирует недопустимые заголовки.

Вы можете использовать директивы nginx, чтобы либо разрешить символы подчеркивания в заголовках с underscores_in_headers on;, либо не игнорировать недопустимый заголовок с ignore_invalid_headers off;.

person elim    schedule 29.10.2012
comment
underscores_in_headers включен; не работал для меня. но ignore_invalid_headers выключен; сработало.... Спасибо. Но можно ли разрешать недопустимые заголовки? - person jbmyid; 11.12.2013
comment
в Индии 1:30!! Я хочу поблагодарить вас за этот ответ, я был расстроен в течение последних 5 часов. @элим спасибо!!!! - person Vibhanshu Biswas; 12.08.2020

У меня была аналогичная проблема, и я добавил следующие настройки в часть конфигурации nginx:

uwsgi_pass_header Authorization;
uwsgi_pass_request_headers on;

Обратите внимание, что значение, которое я использовал для uwsgi_pass_header, равно Authorization.

С этими настройками мое приложение начнет получать заголовки авторизации без предупреждений от nginx.

person T-101    schedule 03.11.2016
comment
Но опция uwsgi_pass_header позволяет передавать заголовки RESPONSE, а не REQUEST. - person Pavel Patrin; 16.11.2017