1. 程式人生 > >ajax中傳送csrf的方法,(django環境)

ajax中傳送csrf的方法,(django環境)

獲取csrf隨機字串的方法:

  1. 通過其name=“csrfmiddlewaretoken”,來獲取如:
    document.getElementsByName("csrfmiddlewaretoken")[0] 
    2 $('input[name="csrfmiddlewaretoken"]') 或$('[name="csrfmiddlewaretoken"]') 
    3  或者獲得cookie中的csrf字串 :

    document.cookie.split('=')[1]
    "cL0Jg0YRoof8VUDvUDDONyMoAxEANALqlYY0lp3w9nIG4JVd9yioSA9r0rSbHH0F"

    或引入jQuery,後:

    $.cookie('csrftoken')
    "cL0Jg0YRoof8VUDvUDDONyMoAxEANALqlYY0lp3w9nIG4JVd9yioSA9r0rSbHH0F"

如何傳送到後臺

  首先,cookie中取到的字串和獲取標籤值得到的字串是不同的。

  然後傳送標籤字串:

 

$('#submit').on('click',function () {
var stingCsrf=$('[name="csrfmiddlewaretoken"]').val();
var stingText=$('[name="test"]').val();

$.ajax({
url:'/csrftext/',
type:'POST',

data:{'user':stingText,'csrfmiddlewaretoken':stingCsrf},
success:function (arg) {
console.log(arg);
}

});
})

  傳送cookie中csrf字串:

$('#submit').on('click',function () {
        var stingCsrf=$.cookie('csrftoken');      {#獲取csrftoken字串#}
        var stingText=$('[name="test"]').val();
        $.ajaxSetup({
            beforeSend: function(xhr, settings) {
                    xhr.setRequestHeader("X-CSRFToken", stingCsrf); {#設定post請求頭部,加入csrf字串#}
                }
        });
        $.ajax({
            url:'/csrftext/',
            type:'POST',
            data:{'user':stingText},
            success:function (arg) {
                console.log(arg);
            }

        });
    })