#jquery #ajax #django #csrf #cors
Добрый день. Пытаюсь передать простой текст из min.example.com на api.example.com var data = $("form").serialize() $.ajax({ url: 'http://api.example.com/v1/' + dept, type: 'POST', crossDomain: true, success: function(response){ alert('ajax complide'); alert(response); }, error: function (responseData, textStatus, errorThrown) { console.log('POST failed.'); } }); Получаю -> [HTTP/1.0 403 FORBIDDEN 1036мс] Заголовок ответа на мой запрос X-Frame-Options: SAMEORIGIN Server: WSGIServer/0.2 CPython/3.4.3 Date: Wed, 01 Jul 2015 06:35:49 GMT Content-Type: text/html Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE Access-Control-Allow-Headers: Content-Type,* Access-Control-Allow-Credentials: true
Ответы
Ответ 1
Оказалось, что django запрещал POST запросы без прикрепленного к нему специального токена выдаваемого самим django(читайте про CSRF). Если оба сайта написаны на django, то читать здесь на djbook.ru Если же приложение с которого идет POST запрос не django app(в моем случае Yii), то нужно отключить CSRF для view принимающего запрос, написав перед ним(view) @csrf_exempt
Комментариев нет:
Отправить комментарий