关于Django上线后的CSRF问题
首先在宝塔上安装Python项目管理器,采用如下配置,能够快速搭建Django项目。 ![](https://blog.coolcooltomato.com/uploads/article/Django上线后的CSRF问题1.png) 然后进行映射域名,启动项目,发现只要含有表单的页面都出现CSRF错误的信息。由于Django的防CSRF是默认开启的,所以如果表单内没有添加{% csrf_token %}会导致报错。 ![](https://blog.coolcooltomato.com/uploads/article/Django上线后的CSRF问题2.png) 对于CSRF报错,最简单的方法就是注释掉上面的代码,然后所有的表单都不添加{% csrf_token %}。但这又会引出一个新问题,因为Django系统自带的admin应用是包含{% csrf_token %}的,所以还要改系统生成的代码会十分麻烦。 如果你按照正常的流程搭建网站,出现CSRF报错,可能是你开启了SSL,也就是https,这里牵扯到一个跨域的问题。 {% csrf_token %}就是为了防止跨域请求的,而https与http并不是同一个域(可以去搜索跨域相关的知识),因此猜测是开启了https的问题,解决办法如下: 打开站点设置->反向代理->配置文件,添加如下代码: ![](https://blog.coolcooltomato.com/uploads/article/Django上线后的CSRF问题3.png) 重启服务器,问题解决。
创建时间:2022-12-13
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链