Ebay Trading API Получить товар Ajax Запрос - PullRequest
1 голос
/ 02 апреля 2020

Я хочу сделать простой почтовый запрос на Ebay Trading API с javascript Ajax. Вот формат звонка. Я получил ошибку по следующему запросу. Может кто-нибудь сказать мне, что не так с вызовом.

const findbtn = document.querySelector(".find-item-btn");

findbtn.addEventListener("click", getData);

function getData() {
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function() {
    console.log(this.responseText);
  };

  const xml =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">' +
    "<ErrorLanguage>en_US</ErrorLanguage>" +
    "<WarningLevel>High</WarningLevel>" +
    "<ItemID>232789363104</ItemID>" +
    "</GetItemRequest>";

  xhttp.open("POST", "https://api.ebay.com/ws/api.dll", true);

  xhttp.setRequestHeader("X-EBAY-API-COMPATIBILITY-LEVEL", "967");
  xhttp.setRequestHeader("X-EBAY-API-DEV-NAME","6cfe5ebb-73c4-465b-ad24-c4f0aea8de0");
  xhttp.setRequestHeader("X-EBAY-API-APP-NAME","RegnantC-SaveWix-PRD-3ef66784f-24730a7");
  xhttp.setRequestHeader("X-EBAY-API-CERT-NAME","PRD-ef66784f85c1-6c65-4919-bc83-24c6");
  xhttp.setRequestHeader("X-EBAY-API-CALL-NAME", "GetItem");
  xhttp.setRequestHeader("X-EBAY-API-SITEID", "0");
  xhttp.setRequestHeader("Content-Type", "text/xml");
  xhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
  xhttp.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With, Origin, Content-Type, X-Auth-Token");
  xhttp.setRequestHeader("Access-Control-Allow-Methods","GET, PUT, POST, DELETE");
  xhttp.setRequestHeader("X-EBAY-API-IAF-TOKEN","v^1.1#i^1#f^0#r^0#p^3#I^3#t^H4sIAAAAAAAAAOVYeWwUVRjv9lJEaIigTUWzTiEeOLtz7e7sh"
  );

  xhttp.send(xml);
}

и получил следующую ошибку

1 Access to XMLHttpRequest at 'https://api.ebay.com/ws/api.dll' from origin 'localhost/app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

2 POST https://api.ebay.com/ws/api.dll net::ERR_FAILED

Пожалуйста Помоги мне. правильный формат для ajax запроса

1 Ответ

2 голосов
/ 04 апреля 2020

На самом деле это вызывает ошибку CORS. Подробнее об этом вы можете прочитать здесь https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS И если вы хотите решить эту проблему, вы можете включить CORS с сервера. Я имею в виду отправить запрос через ваш сервер.

Или вы также можете использовать заголовок CORS anywhere.

const corsHeader = "https://cors-anywhere.herokuapp.com/";

, затем используйте этот corsHeader, добавляя ваш URL, например,

xhttp.open("POST", corsHeader+"https://api.ebay.com/ws/api.dll", true);

Он отправит запрос и в данный момент показывает error: IAF token supplied is invalid. Если вы предоставите правильный токен IAF, он предоставит вам данные.

...