【问题标题】:Nginx and uWSGI stripping HTTP_AUTHORIZATIONNginx 和 uWSGI 剥离 HTTP_AUTHORIZATION
【发布时间】:2012-10-01 16:32:08
【问题描述】:

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

我向运行 Django 的 API 服务器发送 curl POST。当我让 Django 打印出 request.META 列表时,我看到 HTTP_AUTHORIZATION 丢失了。

Nginx 配置包含这些:

uwsgi_pass_header HTTP_AUTHORIZATION;
uwsgi_pass_request_headers on;

但是做这两个pass似乎没有任何影响。

知道为什么会有这种剥离...它发生在 Nginx 级别、uWSGI 级别还是 Django 级别?

【问题讨论】:

    标签: django nginx uwsgi


    【解决方案1】:

    尝试在你的 curl 帖子中将 HTTP_AUTHORIZATION 中的下划线更改为破折号 HTTP-AUTHORIZATION

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

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

    【讨论】:

    • underscores_in_headers on;对我不起作用。但ignore_invalid_headers 关闭;工作....谢谢。但是允许无效标头可以吗?
    • 凌晨 1:30 在印度!!我要感谢您的回复,我在过去的 5 个小时里很沮丧。 @elim 谢谢!!!!
    【解决方案2】:

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

    uwsgi_pass_header Authorization;
    uwsgi_pass_request_headers on;
    

    注意我用于uwsgi_pass_header 的值是Authorization

    通过这些设置,我的应用开始接收身份验证标头,而不会来自 nginx 的警告。

    【讨论】:

    • 但选项 uwsgi_pass_header 允许传递 RESPONSE 标头,而不是 REQUEST 标头。
    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2014-03-16
    • 2023-02-23
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多