Я пытаюсь получить класс (с GET) из Parse с помощью клиентского ключа. Я смог отправить успешный запрос с помощью Advanced Rest Client для Google Chrome; Я использовал X-Parse-Application-Id
и X-Parse-Client-Key
заголовки.Использование ключа ключа анализа в Angular дает ошибку CORS
[править] [edit2] заголовки отклика (полученные из Инструментов разработчика Chrome OPTIONS):
HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Parse-REST-API-Key, X-Parse-Javascript-Key, X-Parse-Application-Id, X-Parse-Client-Version, X-Parse-Session-Token, X-Requested-With, X-Parse-Revocable-Session, Content-Type
Access-Control-Allow-Methods: OPTIONS, POST, GET, PUT, DELETE
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 86400
Content-Type: application/json; charset=utf-8
Date: Sun, 29 Nov 2015 04:23:08 GMT
Server: nginx/1.6.0
X-Parse-Platform: G1
X-Runtime: 0.000118
Content-Length: 0
Connection: keep-alive
Однако, пытаясь сделать то же самое в угловом приложение дает мне следующую ошибку:
XMLHttpRequest не может загрузить https://api.parse.com/1/classes/GenResources. Поле заголовка запроса X-Parse-Client-Key не разрешено заголовками Access-Control-Allow-Headers в предполетном ответе.
Parse говорит, что он поддерживает использование cross-origin resource sharing, и я смог сделать запрос раньше, используя другой клиент, поэтому я уверен, что сервер не является проблемой. Я бы не смог изменить то, что заголовок ответа в любом случае.
Вот код, который я использовал для формирования запроса GET.
var ng_portal = angular.module("ngPortal", []);
ng_portal.controller("GenResourcesCtrl", ["$http", function($http) {
$http({
method: "GET",
url: PARSE_URL + "/1/classes/GenResources",
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": PARSE_APP_ID,
"X-Parse-Client-Key": PARSE_CLIENT_KEY
}
}).then(
function success(res) {
console.log(res);
},
function error(res) {
console.log(res);
}
);
}]);
Как указано в документах API на странице https://parse.com/docs/rest/guide/#quick-reference-request-format, Parse поддерживает совместное использование ресурсов с использованием разных источников и я смог получить успешный ответ с запрошенными мной данными. Я обновлю исходный вопрос с заголовками. Заголовки ответов содержат * Access-Control-Allow-Methods * и * Access-Control-Allow-Origin *, но не тот, который вы упомянули ... – dook
Отключите кеширование в инструментах разработчика Chrome и щелкните правой кнопкой мыши на перезагрузке, затем выберите, чтобы очистить кеш и перезагрузить. Вы должны увидеть новый вызов OPTIONS перед основным запросом на вкладке сети. Обновите вопрос с заголовками этого предполетного вызова OPTIONS. Благодаря! – allenru
Спасибо, что сообщили мне, как проверить заголовки ответов. Теперь я вижу, что разрешенные заголовки не содержат «X-Parse-Client-Key», в отличие от того, что говорится в документации.Проблема в том, что клиент Advanced REST работает и извлекает данные, но я мог бы определить проблему на этом этапе. – dook