CSRF之Ajax请求

Posted 王先生是胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF之Ajax请求相关的知识,希望对你有一定的参考价值。

A:Ajax提交数据是,携带的CSRF在data中:

  

<form method="POST" action="/csrf.html">
    {% csrf_token %}
    <input id="user" type="text" name="user" />
    <input type="submit" value="提交"/>
    <a onclick="submitForm();">Ajax提交</a>
</form>
                
<script src="/static/jquery-1.12.4.js"></script>
<script>
    function submitForm(){
        var csrf = $(input[name="csrfmiddlewaretoken"]).val();
        var user = $(#user).val();
        $.ajax({
            url: /csrf.html,
            type: POST,
            data: {"user":user, csrfmiddlewaretoken:csrf},
            success:function(arg){
                console.log(arg);
            }
        })
    }
</script>

 

B:Ajax提交数据是,携带的CSRF在请求头中:

 

<form method="POST" action="/csrf.html">
    {% csrf_token %}
    <input id="user" type="text" name="user" />
    <input type="submit" value="提交"/>
    <a onclick="submitForm();">Ajax提交</a>
</form>

<script src="/static/jquery-1.12.4.js"></script>
<script src="/static/jquery.cookie.js"></script>

<script>
    function submitForm(){
    var token = $.cookie(csrftoken);
    var user = $(#user).val()
    $.ajax({
        url: /csrf.html,
    type: POST,
    headers:{X-CSRFToken: token},
    data: { "user":user},
    success:function(arg){
        console.log(arg);
    }
    })
}
</script>

 

以上是关于CSRF之Ajax请求的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题之手写promise

Django-csrf跨站请求伪造

Ajax csrf跨站请求伪造

如何在 Cakephp 3 的 ajax 调用中定义 CSRF 令牌。此外,对于某些 ajax 请求,如何关闭 CSRF

六十六:CSRF攻击与防御之CSRF防御之ajax防御和ajax封装

Django之AJAX文件上传