zoukankan      html  css  js  c++  java
  • 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="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里有装饰器这个参数来设置。

  • 相关阅读:
    转载—javascript 设计模式 文章很长,请自备瓜子,水果和眼药水
    js 中call()方法的使用
    上传、下载
    steps1>Struct2配置文件
    页面刷新
    steps1>Struct2控制器组件
    steps1>Struct2概述
    steps1>Struct2基本流程
    steps1>Struct2struts.xml
    steps1>Struct2web.xml
  • 原文地址:https://www.cnblogs.com/ExMan/p/10430107.html
Copyright © 2011-2022 走看看