request.META不包含从curl -H传递的标头

时间:2013-07-21 03:16:57

标签: django apache curl

“它适用于我的计算机。”

我有一个django应用程序。我跟着this tutorial。 OAuth2在我的开发盒上效果很好:

$ curl -v -H "Authorization: OAuth c52676b24a63b79a564b4ed38db3ac5439e51d47" http://localhost:8000/api/v1/my-model/?format=json

我的本​​地开发应用程序使用以下代码行找到标题:

auth_header_value = request.META.get('HTTP_AUTHORIZATION')

但是当我将它部署到运行apache的ubuntu盒子时,它没有。

我在authentication.py文件中添加了以下内容,以便检查远程计算机上日志中的值。

logging.error(request.GET)
logging.error(request.POST)
logging.error(request.META)

输出中神秘地缺少标题值。所以我得到401s。

1 个答案:

答案 0 :(得分:6)

您是否开启了WSGIPassAuthorization

http://modwsgi.readthedocs.org/en/latest/configuration-directives/WSGIPassAuthorization.html

  

默认情况下,授权标头不会传递   可能会将有关密码的信息泄漏到WSGI应用程序中   当Apache正在执行时,它们应该无法看到它们   授权。