django中的CSRF相关问题

CSRF简介: CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

在django中默认就已经开启了针对CSRF的处理,在settings.py中的 ‘django.middleware.csrf.CsrfViewMiddleware’, 就是开启对CSRF的处理,此时如果通过POST方式提交表单,必须在表单内加入 {% csrf_token %},否则将不会提交成功。
对于 csrf_token 有两种方式,一种是 {{ csrf_token }},另外一种是 {% csrf_token %},前者试将django后台生成的 token 以字符串的形式展示,后者,是以 input 标签的形式,并且隐藏了起来,就是这样的:
<input type="hidden" name="csrfmiddlewaretoken" value="YeqAWDoi4wfNThhzDsJLVx25SY1ped81QGNIihooav5mRrt5nghVZeQvTl9HWSaL" />"

通过ajax方式发送post请求时 CSRF 的认证。

<body>
        {% csrf_token %}  # 生成一个 input 标签,其值就是 token
        <input type="text" name="name"/><br> 
        <input type="submit" value="提交">
        <button class="sub">AJAX提交</button>
</body>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
    $(function () {
        $(".sub").click(function(){
            var token = $('input[name="csrfmiddlewaretoken"]').val()   #  获取带有token的那个 input 标签的值
            var user = $('input[name="name"]').val() 
          $.ajax({
                url: '/test1/',
                type: 'POST',
                headers: {"X-CSRFToken": token},  #  X-CSRFToken 是 django 要求的,不能改
                data: {"user": user},
                success: function (res) {
                    console.log(res)
                }
            })

        })
    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值