2016-03-06 3 views
0

У меня проблема с CORS, когда я пытаюсь выполнить запрос к внешнему API. Я пытался добавить маркер для всех запросов, как это:Настройка заголовков по умолчанию для всех HTTP-запросов не работает

var dApp = angular.module("app", []); 
    dApp.run(function($http) { 
    $http.defaults.headers.common.Authorization = 'APP token=TOKEN'; 
    }); 

Authorization строка определяется как определено по API. Если я проверяю заголовки запроса, я не вижу свою строку, а код возврата - 404 OPTIONS. Я пытался сделать запрос с Postman, и он работает.

возвращает 404, но ошибка в консоли: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.discogs.com/database/search?type=master&artist=The%20Strokes&format=album&callback=. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

Если я передать маркер на URL она работает, но только с GET и POST запросов.

Я уже прочитал вопрос Angular.js performs an options http request for CORS resource, но я не нашел решение моей проблемы

As you can see there aren't my headers

+0

404 означает, что ресурс не существует на сервере. URL-адрес неверен. –

+0

Я попытался сделать запрос с Postman, и он работает. Он возвращает 404, но ошибка в консоли: «Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу https://api.discogs.com/database/search?type=master&artist=The% 20Strokes & = формат альбом и обратный вызов =. (Причина: заголовок CORS «Access-Control-Allow-Origin» отсутствует). Если я передам токен на URL-адресе, он работает, но только с запросами GET и POST. – emattiazzi

+0

Чтение https://www.discogs.com/developers/, этот API, похоже, не поддерживает CORS. Вы должны использовать JSONP для доступа к API. –

ответ

1

Вы можете сделать это для FireFox:

var xhr = new XMLHttpRequest({mozSystem: true}); 

Однако, лучший способ делать это в Chrome, о котором я знаю, - это запустить приложение с --disable-web-security, что не очень хорошо, поскольку, кроме того, что это небезопасно, у вас будет t o сообщите своим пользователям об отключении их безопасности в Интернете, что на самом деле не очень хорошая идея.

Вы можете сделать это следующим образом:

  • вы пишете серверный API, который получает запрос параметров
  • АНИ будет пересылать их на сервер третьей стороной
  • АНИ будет посылать ответ на клиентскую сторону
Смежные вопросы