3

“它适用于我的机器。”

我有一个 Django 应用程序。我遵循本教程。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)

输出中神秘地丢失了标头值。所以我只得到401。

4

1 回答 1

6

你打开了WSGIPassAuthorization吗?

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

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

于 2013-07-21T03:36:43.233 回答