python - Apache 上的 Django 与 mod_wsgi CSRF 验证失败

标签 python django apache csrf

我在 Apache 上有一个带有 mod_wsgi 的 Django 站点。一开始管理页面会返回500错误,重启Apache等后它就开始工作了。但现在当我登录时,我收到 403 消息:

CSRF verification failed. Request aborted.
You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.
If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for 'same-origin' requests.

我的设置中唯一的 CSRF 选项是 CSRF_COOKIE_DOMAIN = "127.0.0.1"

CSSRF_SECURE_DOMAIN 未设置,因此默认为 False。我目前根本没有使用 https,因为该网站仍在开发中。

但我需要能够访问管理界面。

如何修复此错误?在本地开发服务器上一切正常,但一旦推送到网络服务器,我就遇到了这些类型的问题。

那么有人对如何修复我遇到的这个 CSRF 验证错误有任何建议吗?有谁知道如果我在网站上实现 SSL 会发生什么变化?

所有请求/响应都来自同一服务器。感谢所提供的任何帮助。

编辑:

在我的 Django 记录器文件输出中,我得到这一行:

[04/Nov/2015 18:13:20] WARNING [django.request:98] Forbidden (CSRF cookie not set.): /sa-admin/login/

说根本没有设置CSRF cookie。但我使用默认的 contrib.admin 来处理所有这些,所以我对这个问题感到困惑。仅西装已添加到管理员中。但这实际上只是一个皮肤。

最佳答案

您应该从设置中删除 CSRF_COOKIE_DOMAIN = "127.0.0.1"

Django 正在使用您的生产域查找 CSRF token cookie,但找不到它,因为您的应用程序根据您的设置将 127.0.0.1 设置为 cookie 域。因此它返回 HTTP 403 并记录 cookie 未设置。

关于python - Apache 上的 Django 与 mod_wsgi CSRF 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533866/

相关文章:

php - 升级Apache和PHP后某个函数导致segmentation fault

docker - 系统尚未使用 systemd 作为 init 系统 (PID 1) 进行引导。无法操作。尝试在 docker 容器中运行 apache2 时

python - 使用 aggfunc=sum 的 Pandas Dataframes 值计算在几列上

django - 给定一个项目,在 Django 查询集中查找上一个和下一个项目

python - 使用 django 表单获取请求公开数据

Django CSRF 验证失败。请求中止。- CSRF cookie 未设置

apache - 别名和重写器一起工作

python - 如何在python中的列表矩阵中选择最大的数字?

python - Keras 的模型给了我相同的输出

python - Pyparsing 多行输入上的 'no such attribute _ParseResults__tokdict'