2017-01-23 8 views
0

Я пытаюсь позвонить в Ebay API, но он не будет работать на моем локальном сервере. Я получаю следующую ошибку;Нет заголовка «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе на localhost

Нет заголовка «Access-Control-Allow-Origin» на запрашиваемом ресурсе . Origin 'http://localhost:3000' поэтому не разрешен доступ.

Я читал что-то о JSONP и заголовках, но я не понимаю. Может ли кто-нибудь помочь мне объяснить?

Код (angular2):

@Injectable() 
export class PostsService { 
    constructor(private http: Http) { 
     console.log('PostsService Initialized...') 
    } 

    getPosts() { 
     return this.http.get('http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsByKeywords&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=XXXXXkeyXXXX&RESPONSE-DATA-FORMAT=JSON&callback=processJSON&REST-PAYLOAD&keywords=shoe&global-id=EBAY-GB') 
      .map(res => <Post[]>res.json()); 
    } 
} 
+0

https://angular.io/docs/ts/latest/api/http/index/JsonpModule-class.html – anshuVersatile

+0

Сервер не поддерживает вызывается из веб-приложений, которые не загружаются с одного и того же URL-адреса. Для поддержки этого сервера необходимо перенастроить. JSONP, как упоминалось в @anshuVersatile, является обходным решением. Другим обходным решением является запрос на ваш собственный сервер, который перенаправляет URL-адрес ebay и возвращает ответ браузеру. Только браузер проверяет заголовки Access-Control-Xxxx. Серверу все равно. –

+0

Спасибо за ответы, я понимаю обходные пути, о которых вы говорите. Хотя, я довольно новичок в обработке запросов и до сих пор не могу понять, как сделать запрос перенаправления, который должен отвечать на мой браузер данными. Есть ли какие-нибудь примеры? – Bokdem

ответ

1

АНИ вы пытаетесь получить доступ производится с JSONP так что вам нужно, чтобы получить доступ через JSONP вызова. JSONP - это что-то вроде добавления тега script в ваш html. И, к счастью, у углового 2 есть собственный jsonpmodule, вы можете изучить его на https://angular.io/docs/ts/latest/api/http/index/JsonpModule-class.html