Проблема CORS с созданием географической подписки Instagram API

Я пытаюсь отправить POST-запрос к конечной точке API географической подписки Instagram.

Я получаю ту же ошибку, что и другие:

    OPTIONS https://api.instagram.com/v1/subscriptions/ 
    XMLHttpRequest cannot load https://api.instagram.com/v1/subscriptions/. 
    No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:1337' is therefore not allowed access. The response had HTTP status code 405.

Я использую Node/Express и Angular для интерфейса.

Это мой запрос в Angular, сделанный с помощью службы $http:

    $http.post('https://api.instagram.com/v1/subscriptions/', 
    {   
        client_id: 'XXX',
        client_secret: 'XXX',
        object: 'geography',
        aspect: 'media',
        lat: 35.657872,
        lng: 139.70232,
        radius: 1000,
        callback_url: 'http://localhost:1337/auth/instagram/callback'
    })
    .success(function (data, status) {
        console.log("success", data);
    })
    .error(function (data, status) {
        console.log("error", data);
    });

С помощью других сообщений SO я настроил заголовки следующим образом: http://repl.it/BDYf

Общая структура моего приложения взята из этого генератора стека MEAN, а файлы, необходимые для repl.it, на который я ссылаюсь, взяты из этого, если есть какая-либо путаница в том, что это такое - https://github.com/FullstackAcademy/fsg/tree/master/generated/server

Я был бы очень признателен за помощь - у меня была проблема с CORS до того, как я использовал $http.jsonp, но, как вы знаете, вы не можете использовать jsonp для запроса POST, о чем просит API.

Благодарю вас!


person bkal    schedule 24.08.2015    source источник


Ответы (2)


Я наткнулся на этот ответ, и хотя это имело смысл

[https://stackoverflow.com/a/22850652/1271376][1]

Невозможно выполнять вызовы POST напрямую со стороны клиента. Вам необходимо настроить прокси-сервер, который вызывает вызовы API Instagram для POST и DELETE, и ваше приложение на стороне клиента может вызывать прокси-сервер.

person invalidred    schedule 24.08.2015

Вам нужно включить запросы между источниками, включив его на $httpProvider. Например:

module.config(['$httpProvider', function ($httpProvider) {
    // configure the HTTP provider to enable cross-origin requests
    $httpProvider.defaults.useXDomain = true;
}]);
person Jack A.    schedule 24.08.2015