前端简单的登陆页面,POST用户名和密码,发送请求时出现错误403,如下:
通常,当存在真正的跨站点请求伪造时,或者Django的CSRF机制没有正确使用时,就会发生这种情况。如欲索取邮寄表格,请确保:
- 你的浏览器已经开启cookie;
- view函数将request请求传递给模板的render方法;
- 在模板中,每个针对内部URL的POST表单中都有一个{% csrf_token %}模板标记;
- 如果不使用csrfview中间件,则必须对使用csrf_token模板标记的视图以及接受POST数据的视图使用csrf_protect;
- 表单有一个有效的CSRF令牌。在登录到另一个浏览器选项卡或在登录后单击back按钮后,您可能需要用表单重新加载页面,因为标记在登录后会循环。
页面中的信息的大概内容,有两种方法可以解决该问题:
-
方法一:不使用CSRF中间件:
在django工程的配置文件中,将MIDDLEWARE中的'django.middleware.csrf.CsrfViewMiddleware'
行注释掉;
-
方法二:在前端html文件的Form表单标签下,添加{% csrf_token %} :