Ошибка CORS API eBay Trading

Я пытаюсь сделать GetOrders вызов API eBay Trading и получаю сообщение об ошибке CORS:

XMLHttpRequest не может загрузить https://api.ebay.com/ws/api.dll . В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, Origin '' не имеет доступа.

Это заголовки:

URL-адрес запроса: https://api.ebay.com/ws/api.dll , Метод запроса:ОПЦИИ

Status Code:200 OK Request Headersview source Accept:*/*
Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:x-ebay-api-siteid, x-ebay-api-dev-name, content-type, x-ebay-api-cert-name, accept, x-ebay-api-request-encoding, x-ebay-api-call-name, x-ebay-api-app-name, x-ebay-api-compatibility-level
Access-Control-Request-Method:POST Connection:keep-alive
Host:api.ebay.com Origin:<mydomain.com>
Referer:<mydomain.com> User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36

Заголовки ответа:

Allow:GET, HEAD, POST, TRACE, OPTIONS
Connection:keep-alive
Content-Length:0
Date:Sun, 19 Jan 2014 18:15:10 GMT
Server:Apache-Coyote/1.1
X-EBAY-ESB-GUID:urn:uuid:UUIDDDODSDFLSDKLSDKFJKS
X-EBAY-ESB-SITEID:0

Нужно ли eBay явно «разрешать» мой домен для CORS? Я искал в Интернете и документацию API eBay, и нет никаких указаний на это. Если я использую curl, вызов API выполняется успешно, хотя торговый API eBay не возвращает Access-Control-Allow-Credentials: true.


person Abdul    schedule 19.01.2014    source источник


Ответы (1)


На практике все браузеры применяют ограничения на совместное использование ресурсов между источниками, описанные в стандарте CORS, который включает в себя отправку запроса OPTIONS предварительной проверки, как вы видите. Проверка не является обязательной, хотя пользовательские агенты, не являющиеся браузерами, такие как curl, HTTP-клиенты Android/iOS и т. д., обычно не применяют эту проверку.

На eBay нет процесса разработчика, позволяющего определенным доменам делать междоменные запросы ресурсов. Поддержка CORS несколько неоднородна в разных API. Например, поисковый вызов API findItemsByKeywords отлично работает в междоменном режиме (см. ), в то время как другие сервисы этого не позволяют (см. очень старый, но до сих пор оставшийся без ответа запрос здесь).

Это не лучший ответ, но вы всегда можете использовать внутренний прокси-сервер для совершения звонков. Таким образом, ваш бэкенд может выполнять вызовы с помощью curl и т.п., и вы также получаете возможность скрыть свой appID, пользовательские токены и другие секреты от локальной проверки вашего javascript.

Вы также можете подать запрос на eBay, но некоторые из этих билетов уже некоторое время томятся.

person vonWippersnap    schedule 13.02.2015