2012-10-01 120 views
2

我正在使用API​​,似乎Nginx和uWSGI正在删除我传递的HTTP_AUTHORIZATION标头。Nginx和uWSGI剥离HTTP_AUTHORIZATION

我发送一个curl POST到运行Django的API服务器。当我有Django打印出request.META的列表时,我发现缺少HTTP_AUTHORIZATION。

Nginx的配置包含以下:

uwsgi_pass_header HTTP_AUTHORIZATION; 
uwsgi_pass_request_headers on; 

但是做这些两遍似乎没有任何影响。

任何想法为什么有这种剥离...它发生在Nginx级别,uWSGI级别还是Django级别?

回答

4

尝试将HTTP_AUTHORIZATION中的下划线更改为卷曲文章中的短划线。

默认情况下,nginx将下划线标记为无效,并忽略无效标头。

您可以使用nginx指令来允许使用underscores_in_headers on;的标头中的下划线,或者不要忽略与ignore_invalid_headers off;无效的标头。

+0

underscores_in_headers on;没有为我工作。但关闭ignore_invalid_headers;工作....谢谢。但可以允许无效的头文件吗? – jbmyid

-1

我也有类似的问题,并增加了以下设置,以我的nginx的配置位置部分:

uwsgi_pass_header Authorization; 
uwsgi_pass_request_headers on; 

通知我用于uwsgi_pass_headerAuthorization

使用这些设置,我的应用程序开始接收auth头文件,而不需要nginx的警告。

+0

但选项uwsgi_pass_header允许传递RESPONSE头,而不是REQUEST头。 –