码迷,mamicode.com
首页 > 编程语言 > 详细

python中django框架的csrf验证

时间:2017-05-28 09:51:16      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:user   form   pos   color   固定   logs   action   弊端   end   

在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="1">10秒免登陆
    <input type="submit" value="提交">
    <input type="button" value="点击" 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验证

标签:user   form   pos   color   固定   logs   action   弊端   end   

原文地址:http://www.cnblogs.com/yloven/p/6915016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!