Ebay交易API获取商品Ajax请求

问题描述 投票:0回答:1

我想使用javascript Ajax在Ebay交易api上进行简单的发布请求。这是通话格式。我在以下请求中遇到了一些错误。谁能告诉我电话有什么问题。

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请求的正确格式

javascript ajax api ebay-api
1个回答
0
投票

实际上是引起CORS错误。您可以从这里https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS了解有关它的详细信息如果要解决此问题,可以从服务器启用CORS。我的意思是通过您的服务器发送请求。

或者您也可以使用CORS anywhere标头。

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

然后使用此corsHeader并附上您的网址,

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

它将发送请求,当前显示为error: IAF token supplied is invalid。如果您提供适当的IAF令牌,那么它将为您提供数据。

© www.soinside.com 2019 - 2024. All rights reserved.