“它适用于我的计算机。”
我有一个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。
答案 0 :(得分:6)
您是否开启了WSGIPassAuthorization
?
http://modwsgi.readthedocs.org/en/latest/configuration-directives/WSGIPassAuthorization.html
默认情况下,授权标头不会传递 可能会将有关密码的信息泄漏到WSGI应用程序中 当Apache正在执行时,它们应该无法看到它们 授权。