今天在Django上用POST提交表单时候,遇到了一个403错误。
在报错信息看到CSRF 验证失败,CSRF???CSRF的中文名是:跨站请求伪造,是一种网络攻击方式。表单是POST请求方式,可以向服务器输入数据,假如某个用户从未登录过我们的网站,一上来就POST我们,这就有点异样。 所以Django的中间件默认会阻挡CSRF,那我们告诉后端这次允许访问就好了。
方法一: 在Settings里的MIDDLEWARE_注释CSRF配置:
注释掉划红线的那一行就好了。
方法二: token验证机制,请求数据字段中添加一个token
我们在web开发的时候可以给每一个登录的用户分配一个token。这个token会被写入到用户的cookie文件里面。然后下次用户post数据的时候,就会带上这个token。 因此如果没有token的用户就会被禁止post数据。
在你想要提交的Form表单里加上{% csrf_token %} 。(注意%和csrf_token之间有空格)
网友评论