gpt4 book ai didi

django - 缺少 django、nginx 和 gunicorn 的自定义 header

转载 作者:行者123 更新时间:2023-12-04 03:45:50 25 4
gpt4 key购买 nike

免责声明:

我正在一个项目中工作,该项目存在一个“巨大”的 web 应用程序,它有一个用于移动设备的 api,所以更改 api 不是一个选项。

这个应用程序是很久以前开发的,有几个开发人员已经在开发它,

话虽如此,问题是这样的;

在本网站的移动 api 中(只是查看而不是返回 json 数据),代码正在寻找 token ,但在请求的 header 中:

token = request.META.get('HTTP_TOKEN')

当我在本地测试这个 api 时,工作正常,但在生产中却没有,所以,我试图弄清楚发生了什么并发现了这个:

django 将 header ,甚至自定义 header 转换为 request.META 中的键,我使用 urllib2 和 requests为了测试 api 和生产中的问题是在生产服务器中 request.META 从来没有一个叫做 HTTP_TOKEN 的键,所以,做一些调试我认真地认为问题是我们为 django 应用程序提供服务的方式。

我们正在使用 django1.3、nginx、gunicorn、virtualenvwrapper、python2.7。

我的主要嫌疑人是 nginx,我认为,以某种方式 nginx 接收 header 但不将其转发到 django,我尝试对此进行一些研究,但我只找到了有关安全 header 和来自 nginx 的自定义 header 的信息,但我没有找到doc 或有关如何告诉 nginx 允许该 header 并且不要删除它的内容。

我在这里需要帮助,第一件事是测试 nginx 是否收到 header ,但我只对 nginx 了解一点,我不知道如何告诉它记录请求的 header 。

谢谢

更新

nginx conf file

最佳答案

如果使用 uwsgi_pass 访问 Django,则在适当的位置...

# All request headers should be passed on by default     
# Make sure "Token" response header is passed to user
uwsgi_pass_header Token;

如果使用 fastcgi_pass 访问 Django,则在适当的位置...
# All request headers should be passed on by default     
# Make sure "Token" response header is passed to user
fastcgi_pass_header Token;

如果使用 proxy_pass 访问 Django,则在适当的位置...
# All request headers should be passed on by default
# but we can make sure "Token" request header is passed to Django
proxy_set_header Token $http_token;

# Make sure "Token" response header is passed to user
proxy_pass_header Token;

这些应该有助于消除 Nginx 没有从您的问题中传递信息的可能性。

关于django - 缺少 django、nginx 和 gunicorn 的自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com