Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Кросс-доменный Ajax POST

#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

Комментариев нет:

Отправить комментарий