Django:Forbidden (403) CSRF verification failed. Request aborted. 解决之道
来源:互联网 发布:网络策划是什么 编辑:程序博客网 时间:2024/06/05 18:17
原文链接:http://blog.csdn.net/zgyulongfei/article/details/8830750
先让我还原一下错误页面:
今天被这个错误折腾了一上午,搞得我心力交瘁。网上搜索了很多答案,大致解决方案都是相同,我照着做,可是错误依然存在。
后来找jack帮忙才总算解决了这个问题。
原来我之前的方案一直是本末倒置,没有摸清楚django的csrf原理,就在那边瞎弄,浪费了很多时间。
下面我来说说我问题所在,如果你和我犯了同样的错误,可以做一下参考。
首先我做了一个test.html,如下:
访问时候为 xx.xx.com/post,执行的方法为
这个表单中已经包含了tag {% csrf_token %},这是网上解决方案中都说需要加上的标签。
点击【发布】按钮提交表单之后,执行/postblog操作,接下来看看服务端代码。
先在settings.py中加上
再看urls.py
然后看views.py
对于一个django初学者来说,一切都按照错误页面的Help中来做的啊,为什么结果还是错误的呢?
答:因为,,,从一开始的html页面就错了,而我在错误的前提下去做结果的补救,就救不回来了←_←
有经验的django开发者应该一眼就看得出错误的根源。
其实表单中的{% csrf_token %}在html页面被加载的时候就已经被赋值了,而post的时候需要将这个被赋值的csrf_token发送给服务端进行验证,如果验证成功才能进行post操作,否则就被认为是csrf攻击。
而上文中的test.html中一开始并没有由服务器给出一个csrf_token,在post的时候自然而然就不能成功验证。
而 context_instance=RequestContext(rq)的作用就是给这个csrf_token进行赋值,上文中却把赋值的操作在post之后进行,而正确地操作是在post之前打开html页面的时候就赋值。
所以只要修改post_html方法就行:
以上。
- Django:Forbidden (403) CSRF verification failed. Request aborted. 解决之道
- Forbidden (403) CSRF verification failed. Request aborted. 解决之道
- Django Forbidden (403) CSRF verification failed. Request aborted.
- Python Django Forbidden (403) CSRF verification failed. Request aborted.
- python-Django Forbidden (403) CSRF verification failed. Request aborted.
- python [解决方法] Forbidden (403) CSRF verification failed. Request aborted.
- Django1.11.1解决 Forbidden (403) CSRF verification failed. Request aborted.
- 【Django】CSRF verification failed. Request aborted.
- Django web : CSRF verification failed. Request aborted.
- Django: CSRF verification failed. Request aborted.
- Django POST CSRF verification failed. Request aborted
- Django 403错误:CSRF verification failed. Request aborted.
- Django 403错误:CSRF verification failed. Request aborted.
- 403 CSRF verification failed. Request aborted
- CSRF verification failed. Request aborted
- CSRF verification failed. Request aborted.
- CSRF verification failed. Request aborted
- CSRF verification failed. Request aborted.
- 一个Java高级工程师的进阶之路
- sublime text java import插件
- String、StringBuffer与StringBuilder之间区别
- android 代理模式 动态代理
- Java基础应用之基本语法(重定向输出流实现程序日志)
- Django:Forbidden (403) CSRF verification failed. Request aborted. 解决之道
- CSV文件
- Zookeeper(一)分布式事务
- Myeclipse Loading org.eclipse.mlyn.tasks.ui卡死
- maven报错 pom.xml
- 蓝桥 十六进制转十进制
- 07_类类型转换、继承、虚基类、 静态联编 与 动态联编、父子类指针、虚函数、类模板
- redis&memcached for windows 安装与使用
- 初识.net界面程序(12)——按钮外观设计练习