django中原生Ajax的csrf問題
阿新 • • 發佈:2019-01-22
我們都知道在JQ中其中一條提交 csrf方式為
$.ajax({
url:"/login/",
type:"POST",
data:{'a':'abc'},
headers:{ "X-CSRFtoken":$.cookie("csrftoken")},
success:function (arg) {
}
}
就是在 headers 請求頭中設定X-CSRFtoken。
那麼在原生Ajax中也是一樣的
<script >
function XMLAjax() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
alert(xhr.responseText);
}
};
xhr.open('POST','/ajax_out/');
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded' );
xhr.setRequestHeader(
'X-CSRFToken','VxA6OiwZwMGIqB2YCzZZe5UXhh4p8cB3cfeRRU9RSUeXucEZU5dCDV3BmAgBvjeZ');
xhr.send("i1=12&i2=19");
}
</script>
設定請求頭
xhr.setRequestHeader(
‘X-CSRFToken’,’VxA6OiwZwMGIqB2YCzZZe5UXhh4p8cB3cfeRRU9RSUeXucEZU5dCDV3BmAgBvjeZ’);
這樣就不會再提示報錯了403了。