首页 > 代码库 > python中django框架的csrf验证
python中django框架的csrf验证
在form表单以post的方式提交时,django默认会带一个验证的机制csrf验证
<form action="/day02/login/" method="post"> {% csrf_token %} 用户名: <input type="text" name="user"> 密码 <input type="text" name="pwd"> <input type="checkbox" name="deng" value=http://www.mamicode.com/"1">10秒免登陆 <input type="submit" value=http://www.mamicode.com/"提交"> <input type="button" value=http://www.mamicode.com/"点击" id="btn"> </form>
必须把随机cookie验证发过去,这样django机制才能验证成功
若是采用ajax的post方式提交则会出现403 Forbidden的验证
解决办法:在提交的请求头,用cookie的变量发送,请求头里不能有下划线(注意)
$.ajax({ url:‘/day02/login/‘, type:‘POST‘, data:{‘user‘:‘keke‘,‘pwd‘:‘123‘}, headers:{‘X-CSRFtoken‘:$.cookie(‘csrftoken‘)}, suceess:function (arg) { }
若是多个ajax一起触发,每次都请求有点麻烦,在ajax里有一个触发前的机制。
$.ajaxSetup({ beforeSend:function (xhr,settings) { xhr.setRequestHeader(‘X-CSRFtoken‘,$.cookie(‘csrftoken‘)); } });
在ajax之前的验证提交。参数是固定的。
但是这样写有个弊端,就是所有的ajax不管是get还是post,还是其他的请求都会走一遍ajax,
若有get提交,不想让它请求的,在django里有装饰器这个参数来设置。
python中django框架的csrf验证
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。