ajax中傳送csrf的方法,(django環境)
阿新 • • 發佈:2018-11-06
獲取csrf隨機字串的方法:
- 通過其name=“csrfmiddlewaretoken”,來獲取如:
1 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); } }); })