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

Tay*_*lor 3 apache django curl

"它适用于我的机器."

我有一个django应用程序.我按照本教程.OAuth2在我的开发框中运行良好,如下所示:

$ curl -v -H "Authorization: OAuth c52676b24a63b79a564b4ed38db3ac5439e51d47" http://localhost:8000/api/v1/my-model/?format=json
Run Code Online (Sandbox Code Playgroud)

我的本地开发应用程序找到了这行代码的标题:

auth_header_value = request.META.get('HTTP_AUTHORIZATION')
Run Code Online (Sandbox Code Playgroud)

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

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

logging.error(request.GET)
logging.error(request.POST)
logging.error(request.META)
Run Code Online (Sandbox Code Playgroud)

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

fal*_*tru 6

你打开了WSGIPassAuthorization吗?

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

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

  • 哈...也许这是英国的拼写。#授权。:P (2认同)