Django REMOTE_USER 不存在但 HTTP_REMOTE_USER 存在

标签 django httprequest python-requests

全部,

我有一个应该很简单的问题。我正在尝试按照以下说明使用 REMOTE_USER 变量使用 Django 身份验证:https://docs.djangoproject.com/en/1.8/howto/auth-remote-user/ .

然后,为了测试它是否有效,我使用了 postman chrome 扩展。我在那里设置了一个名为“REMOTE-USER”的标题变量,然后是 super 用户的文本,然后我进入了 django 管理页面。我不会自动登录。

我在 RemoteUserMiddleware 类的 process_request 函数中设置了一个断点。当我发出请求时,我看到 request.META["HTTP_REMOTE_USER"] 存在但 request.META["REMOTE_USER"] 不存在。默认的 RemoteUserMiddleware 变量使用 header="REMOTE_USER"。似乎 HTTP header 变量有一个 HTTP_ 前缀,所以我不明白这是怎么回事。

我觉得我一定遗漏了一些明显的东西。谢谢!

最佳答案

REMOTE_USER 是由您的网络服务器(例如 Apache)设置的环境变量,而不是 HTTP header 。如果它是一个 HTTP header ,那么用户将能够欺骗该 header ,并以他们想要的任何用户身份登录。

所有 http header 都带有前缀 HTTP_,以便您可以区分它们和环境变量。

您可以使用开发服务器设置环境变量,如下所示。

REMOTE_USER=admin ./manage.py runserver

关于Django REMOTE_USER 不存在但 HTTP_REMOTE_USER 存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32508787/

相关文章:

api - 使用 CFTHREAD 处理外部 HTTP 请求并返回异步响应

java - 如何在 Spring MVC 中处理 HTTP header ?

使用 API 获取 json 中的 xml 数据的 python 脚本

python - 如何使用 python 请求登录 instagram?

python - Django 模板标签不起作用

python - 添加/更改表单中的 ForeignKey 字段 - Django admin

django - 使用 get_queryset() 方法或设置查询集变量?

Django 数据库连接错误

java - 在struts 2中上传视频

python - 如何知道何时使用 Python 的 Requests 模块向网站发送 “log in” ?