
禁止访问 (403)CSRF验证失败. 请求被中断.HelpReason given for failure: Origin checking failed
CSRF 验证机制检测到请求的 Origin 或 Referer 头部与受信任的域名不匹配
·
如下图所示报错
表单的CSRF防护,可以在模板上删除{% csrf_token %}, 并且在相应的视图函数中添加装饰器@csrf_exempt
当前我的项目是在服务器部署添加域名后报错的
这个错误是因为 Django 的 CSRF 验证机制检测到请求的 Origin
或 Referer
头部与受信任的域名不匹配。要解决此问题,可以将新域名添加到 Django 的 settings.py
中的 CSRF_TRUSTED_ORIGINS
设置里。
解决步骤
-
打开 Django 项目的
settings.py
文件。 -
找到或添加
CSRF_TRUSTED_ORIGINS
配置,并将你的域名添加进去:CSRF_TRUSTED_ORIGINS = [ 'http://www.xxxx.com', # 添加你的域名 'https://www.xxxx.com' # 如果使用 HTTPS 协议,则也需要加上 ]
-
如果你还没有配置
ALLOWED_HOSTS
,也可以在同一个文件里添加或更新它,以确保 Django 允许该域名访问:ALLOWED_HOSTS = [ 'www.xxxxx.com', 'xxxx.com' # 如果需要无 www 前缀的访问 ]
-
保存
settings.py
并重新启动 Django 应用以应用更改。
注意
- 如果你使用 HTTPS 协议访问你的域名,确保
CSRF_TRUSTED_ORIGINS
中也包含https://www.xxx.com
。 - 添加之后,Django 将信任从这些域名发出的请求,CSRF 验证应当通过。
完成这些步骤后,你的登录表单应该能够正常提交,不再触发 CSRF 验证错误。
更多推荐
所有评论(0)