宝塔51特惠活动,企业版1099元/年,送SSL证书,最高立减2万元!查看活动
当前位置:论坛首页 > Linux面板 > 求助

【已解决】Django CSRF验证失败

发表在 Linux面板2023-4-23 15:30 [复制链接] 2 4551

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本:面板7.9.9  Python项目管理器2.2
系统版本:CentOS 7.9.2009 x86_64(Py3.7.9)
问题描述:采用Python项目管理器部署Django项目到7001端口,并映射域名,通过映射的域名访问Django管理页面登录时会出现CSRF验证失败,如果通过IP访问则不会
相关截图(日志、错误反向代理配置如图

ab2d95873d900d7b4f7a06ddb5245ad.png
使用道具 举报 只看该作者 回复
发表于 2023-4-23 17:00:10 | 显示全部楼层
您好,CSRF(跨站请求伪造)是一种常见的网络攻击方式,Django 默认启用了 CSRF 防护功能。如果您在使用映射的域名访问 Django 管理页面时出现 CSRF 验证失败的问题,可能是由于您的 Nginx 服务没有正确地传递 CSRF token 导致的。
解决方法如下:

在 Django 项目的 settings.py 文件中添加以下配置:
  1. CSRF_TRUSTED_ORIGINS = ['your.domain.com']
复制代码
其中 "your.domain.com" 替换成您的域名。
这个配置将告诉 Django,您的域名是可信的,可以信任您的 Web 服务器传递的 CSRF token。
2. 在 Nginx 或者 Apache 的配置文件中添加以下配置:
  1. location / {
  2.     proxy_set_header X-Forwarded-Proto $scheme;
  3.     proxy_set_header X-Real-IP $remote_addr;
  4.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  5.     proxy_set_header Host $host;
  6.     proxy_pass http://127.0.0.1:7001;
  7.     proxy_redirect off;
  8. }
复制代码
其中,proxy_pass 后面的地址应该与您的 Python 项目管理器配置的地址一致。
3. 重启 Nginx,然后尝试通过映射的域名访问 Django 管理页面。
您可参考以上操作来解决 CSRF 验证失败的问题。
使用道具 举报 回复 支持 反对
发表于 2023-4-24 09:50:18 | 显示全部楼层
本帖最后由 宝塔用户_tubqsa 于 2023-4-24 10:13 编辑
堡塔运维盏尽 发表于 2023-4-23 17:00
您好,CSRF(跨站请求伪造)是一种常见的网络攻击方式,Django 默认启用了 CSRF 防护功能。如果您在使用映 ...

谢谢您的解答问题已解决
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析
快速回复 返回顶部 返回列表