Nginx和uWSGI剥离HTTP_AUTHORIZATION

时间:2012-10-01 16:32:09

标签: django nginx uwsgi

我正在使用API​​,似乎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级别上发生的?

2 个答案:

答案 0 :(得分:4)

尝试将HTTP_AUTHORIZATION中的下划线更改为卷曲帖子中的短划线HTTP-AUTHORIZATION

默认情况下,nginx将带有下划线的标题标记为无效,并忽略无效的标题。

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

答案 1 :(得分:-1)

我有类似的问题,并将以下设置添加到我的nginx配置的位置部分:

uwsgi_pass_header Authorization;
uwsgi_pass_request_headers on;

请注意,我用于uwsgi_pass_header的值为Authorization

通过这些设置,我的应用程序可以在没有来自nginx的警告的情况下开始接收auth标头。