Форум сайта python.su
Добрый вечер! Подскажите пожалуйста. Всю голову сломал, весь гугл перерыл. Все что смог найти это что надо ДОБАВИТЬ CROS и в запрос и в ответ.
Суть в следующем. Есть сайт, на домене на хосте где то. Есть сайт на другом домене на сервере.
На сервере крутится сервис на джанго.
И вот мне с сайта, что на хосте, надо ajax запрос отправить на к django на сервере, и принять ответ.
Помогите, как это сделать? Кодом желательно, самый простейший вариант
https://toster.ru/q/274422 мой топик. Ничего не понятно
Офлайн
А что именно непонятно, в чем трудности?
1) На джанге добавляем CORS к заголовкам для тех ответов, которые хотим отдавать по ajax с другого домена.
2) Делаем ajax запрос с другого домена к джанге.
Отредактировано plusplus (Дек. 15, 2015 12:35:34)
Офлайн
Сложность как раз в добавлении этого заголовка. Поясняю.
Вот js который валяется на example.ru
$.ajax({ url: "http://example3.ru", type: 'POST', data: { mass: mass, sost: sost, d: d, }, dataType:"json", // При успехе меняем информацию в шаблоне success: function(data){ //window.location.href = "{{url}}/crm/todos/"; //rePrintTable(data.dela); }, error: function(data) { //window.location.href = "{{url}}/crm/todos/"; //rePrintTable(data.dela); }, // CSRF механизм защиты Django beforeSend: function(xhr, settings) { console.log('-------------before send--'); function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { // Only send the token to relative URLs i.e. locally. xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } } });// ajax
@csrf_exempt def ei(request): if request.method == "POST" and request.is_ajax(): print request.POST return HttpResponse("ok")
Офлайн
@csrf_exempt def ei(request): response = HttpResponse("ok") response['Access-Control-Allow-Origin'] = "*" if request.method == "POST" and request.is_ajax(): print request.POST return response
Офлайн
Неа((
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://firelead.ru:7755/widgets/ie/. (Причина: отсутствует заголовок CORS ‘Access-Control-Allow-Origin’).
Офлайн
nxexoxЭта ссылка выдает 404-ю ошибку вместо “ok”.
Неа((Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://firelead.ru:7755/widgets/ie/. (Причина: отсутствует заголовок CORS ‘Access-Control-Allow-Origin’).
Офлайн
Спасибо! Заработало. Ваш способ с добавлением заголовка, + я две буквы напутал в url. Все заработало.
Может глянете эту тему??
http://python.su/forum/topic/28834/
Офлайн