Установка заголовков и отправка данных с помощью $http POST в pocket api возвращает CORS

Невозможно отправить http-запрос на Pocket API для получения токена запроса. У меня уже есть потребительский ключ. Проблема заключается в настройке заголовков и отправке данных в запросе. Запрос при просмотре в браузере не отображает ни заголовки, ни данные.

Настройка запроса

var req = {
        method:'POST',
        url:'https://getpocket.com/v3/oauth/request',
        headers: { 'Content-Type': "application/x-www-form-urlencoded; charset=UTF8",
                    'X-Accept':'application/x-www-form-urlencoded'
         },
         transformRequest: function(obj) {
            var str = [];
            for(var p in obj)
            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
            return str.join("&");
        },
        data: pocket_data
    };

    $http(req).then(function(result){console.log(result); 
    },function(error){
        console.log(error);
    });

Запрос из браузера. Я не понимаю, почему метод запроса является OPTIONS вместо POST.

Request URL:https://getpocket.com/v3/oauth/request
Request Method:OPTIONS
Status Code:400 Bad Request
Remote Address:52.0.87.91:443

Заголовки ответа и заголовки запроса отправлены. Я не понимаю, почему тип содержимого является text/html, когда я установил его в application/x-www-form-urlencoded .

 **Response Headers**
view source
Cache-Control:private
Connection:keep-alive
Content-Length:15
Content-Type:text/html; charset=UTF-8
Date:Thu, 04 Feb 2016 07:22:35 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
P3P:policyref="/w3c/p3p.xml", CP="ALL CURa ADMa DEVa OUR IND UNI COM NAV INT STA PRE"
Pragma:no-cache
Server:Apache
Set-Cookie:PHPSESSID=ogqn0s0gmjpo24j6oo6rlj6vm6; path=/
Status:400 Bad Request
X-Error:Missing consumer key.
X-Error-Code:138
X-Source:Pocket
**Request Headers**
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type, x-accept
Access-Control-Request-Method:POST
Cache-Control:no-cache
Connection:keep-alive
Host:getpocket.com
Origin:http://localhost:9000
Pragma:no-cache
Referer:http://localhost:9000/create

Я даже пытался установить тип контента для 'application/json', не сработало. API документация для кармана.

1 ответ

У меня та же проблема. Похоже, что в Pocket API не включен CORS, поскольку ответы не возвращаются с заголовками CORS (например, Access-Control-Allow-Origin: *)

Что-то удивительное - я полагаю, этот API в основном создан для разработчиков приложений, а не для веб-разработчиков? Это также объясняет, почему он отлично работает с такими инструментами командной строки, как curl, потому что они не имеют тех же междоменных ограничений безопасности, что и браузеры.

Для вас это означает, что вам придется написать серверный компонент, расположенный рядом с тем же доменом, что и ваше приложение, и который будет выполнять функции прокси для этих запросов.

Другие вопросы по тегам