Я делаю веб-сайт, на котором я сделал задний конец, в django, а в интерфейсе используется php. Проблема в том, что я пытаюсь сделать вызов ajax из php (localhost)
в django (localhost:8000
всякий раз, когда я пытаюсь сделать так, что он дает mes следующую ошибку
XMLHttpRequest cannot load http://localhost:8000/project/login/uid=bimt;token=KAMWMS151UWP67Q. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
код ajax
$(document).on('click', '.login', function(event) { var username = $('#username').val(); var token = $('#token').val(); $.ajax({ type: "POST", url: "http://localhost:8000/project/login/uid=" + username + ";token=" + token, success: function (html) { alert(html); } }); });
как я могу сделать ajax-вызов от моего интерфейса до бэкэнда django на localhost: 8000
Поскольку порт не является тем же, он считается запросом на перекрестный поиск. Вы должны установить заголовок Access-Control-Allow-Origin
запрошенном скрипте.
Выучить больше:
http://enable-cors.org/server.html
или, в частности, для django:
1) php не делает запросы ajax. php выполняется на стороне сервера; javascript выполняется на стороне клиента, и именно js делает запросы ajax на сервер.
2) js не позволяет вам делать ajax-запросы другому хосту, чем тот, из которого была получена текущая страница.
По умолчанию AJAX не может выполнять междоменные запросы.
Вы должны обратиться к этой ссылке .
Я заменил свой внутренний IP (192.168.1.x) вместо локального хоста и смог вызвать на нем XMLHttpRequest. Это должно сделать трюк, не вникая в политику перекрестного происхождения.
Попробуйте, что-то вроде:
$('#yourClickButtonId').click(function(){ $.ajax({ type: 'POST', url: 'project/login?uid='+$('#usename')+'&token='+$('#token'), success: function(data){ alert(data); } }); });
Вы должны просто использовать относительный путь.