У меня есть бэкэнд django, куда я добавил corsheader и промежуточное ПО.
У меня есть html-страница, с которой я отправляю POST AJAX XMLHttpRequest в мое приложение django, на котором размещается локальный хост, но сообщение никогда не проходит. Он запускает транзакцию GET, и транзакция никогда не достигает сервера.
Код для передней HTML-страницы выглядит следующим образом: -
<button type = "submit" class = "btn btn-success btn-lg" id = "sub1"
onClick=loadDoc() >Login </button>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if ( this.readyState == 4 && this.status == 200 ) {
location.replace(Trial.html);
}
};
xhttp.open("POST", "http://localhost:XXXX/XXXX/XXXX/", true)
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send();
}
</script>
Может ли кто-нибудь указать, что не так? Когда я использую данные формы, сообщение работает, но не работает, когда я использую javascript.
Конечная точка - это просто представление, обрабатывающее URL-адрес, запрашиваемый с html-страницы. Банкенд не облагается csrf. На данный момент представление просто возвращает строку успеха, но в конечном итоге я верну json, как только он заработает.





Причина этого - CORS.
Современные браузеры не поддерживают запросы с перекрестным происхождением. Итак, мне пришлось загрузить и установить модуль заголовка Django CORS. Обновите файл настроек соответствующим образом, чтобы разрешить прохождение запросов из другого источника.
Также пост-запрос AJAX / jQuery был изменен на:
$( "#loginForm" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
var jqxhr = $.post( "http://XXXX.com/xxxx/xxxx/", $( "#loginForm" ).serialize(), function() {
alert( "success" );
})
.done(function( data ) {
if ( data == "SUCCESS") {
location.replace("xxxx.html");
}
else {
alert("WRONG CREDS");
}
})
.fail(function() {
alert( "error" );
});
});
С чем обслуживается локальная конечная точка? Django REST Framework? Или представление, возвращающее
application/json? Исключена ли CSRF конечной точки? У меня может быть пример в зависимости от ответов в jQuery.