Я разработал API загрузки файлов Django, которые получают опубликованные данные от клиента и сохраняют данные как файл.Django X-CSRFToken был установлен, но до сих пор запрещен 403
В соответствии с Django CSRF manual заголовок HTTP-запроса должен установить X-CSRFToken с использованием значения cookie csrftoken. Я установил X-CSRFToken по приведенному ниже коду, но запрос POST по-прежнему запрещен (403) сервером Django, как показано на рисунке ниже.
$(document).ready(function(){
var authid
$.get("http://localhost:8000/v1/getAuthID?username=testuser1&password=123", function(data){
authid = data["authid"];
var csrftoken = $.cookie('csrftoken');
console.log(csrftoken);
$.ajaxSetup({
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});
url = "http://localhost:8000/v1/file".replace("{authid}", authid).replace("{token}", csrftoken)
$.post(url, function(data){
})
})
})
Как вы преодолеваете Django CSRF по запросу POST отправки на сервер Django?
Спасибо!
Почему вы так уверены, что это проблема CSRF? Я не вижу ничего плохого в обработке CSRF с первого взгляда. – knbk
У меня получилось, что проверка CSRF не удалась. Запрос прерван. когда я проверил ответ 403. И я получаю тот же ответ, когда код добавления X-CSRFToken удаляется. – ybdesire
Хорошо, вы можете проверить, соответствует ли файл cookie, отправленный в POST-запросе заголовком? – knbk