我正在使用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级别上发生的?
答案 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标头。