[英]error 403 forbidden on server request via ajax
我正在一個跟蹤待辦事項列表並將其從服務器中拉出的網站上工作。 下面有兩個樣本ajax調用。 任務GET調用可以正常工作,但是添加POST不能。 由於某種原因,它給了我一個403禁止的錯誤,因此,它不執行代碼。
我在Django框架中發出ajax Post請求時正在查看403 Forbidden錯誤,並且我閱讀了@yohn發布的鏈接,但我不了解如何實現此解決方案。
var tasker = (function() {
return {
tasks : function( ownerId, cb ) {
$.ajax({
url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
type: 'GET',
success: function(task) {
if(task){
var list = []
for(var a=0; a<task.length; a++){
var newTask = {
onwerId: task[a].ownderId,
desc: task[a].desc,
due: new Date(task[a].due),
color: task[a].color,
complete: task[a].complete,
id: task[a].id
};
list.push(newTask);
}
cb(list , null);
}
else{ cb(null, 'error retreiving your tasks');}
},
error: function( xhr, status, errorThrown ) {
alert( "Sorry, there was a problem! " + errorThrown );
},
});
},
add : function( ownerId, task, cb ) {
$.ajax({
url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
type: 'POST',
success: function(task) {
var d = new Date(task.due);
if(task){
var newTask = {
onwerId: task.ownderId,
desc: task.desc,
due: d,
color: task.color,
complete: task.complete,
id: task.id
};
cb(newTask , null);
}
else{cb(null, 'error adding your task');}
},
error: function( xhr, status, errorThrown ) {
alert( "Sorry, there was a problem! " + errorThrown );
},
});
},
}
})();
Django在發出POST請求時需要一個csrf
令牌(除非您使用的是基於令牌的身份驗證,但我假設您不在這里)。 就像您需要在表單提交中添加{{ csrf_token }}
。
有關為什么需要它以及csrf令牌的用途的更多信息: 什么是CSRF令牌? 它的重要性是什么?它如何工作?
因此,對於您的問題,在add
到此的下面更改您的ajax調用:
$.ajax({
url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
type: 'POST',
data: { csrfmiddlewaretoken: '{{ csrf_token }}'}, // added csrf token.
success: function(task) {
var d = new Date(task.due);
if(task){
var newTask = {
onwerId: task.ownderId,
desc: task.desc,
due: d,
color: task.color,
complete: task.complete,
id: task.id
};
cb(newTask , null);
}
else{cb(null, 'error adding your task');}
},
error: function( xhr, status, errorThrown ) {
alert( "Sorry, there was a problem! " + errorThrown );
},
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.