skip to Main Content

I want to made simple post request on Ebay trading api with javascript Ajax. Here is the call format. I got some error on the following request. can anyone tell me the what wrong with the call .

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);
}

and got the following error

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

Please help me. is the right format for the ajax request

2

Answers


  1. Actually it’s causing the CORS error. You can read about it details from here https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    And if you want to overcome this issue you can enable CORS from server. I mean send the request through your server.

    Or you can also use CORS anywhere header.

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

    then use this corsHeader appending with your url like this,

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

    It’ll send the request and currently it’s showing error: IAF token supplied is invalid. If you provide proper IAF token then it’ll provide you the data.

    Login or Signup to reply.
  2. I’m very new to programming in general so this will not be a technical answer in the least, but…. I did get this to eliminate the CORS error.

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

    xhttp.open("POST", "https://api.ebay.com/identity/v1/oauth2/token", true);
    
    
    
    xhttp.open("POST", corsHeader, true);
    

    I had to go here first and enable temporary access though.
    https://cors-anywhere.herokuapp.com/corsdemo

    Now when I run this the console is saying:
    "This API enables cross-origin requests to anywhere."

    If I can figure out how to get any farther I will update this thread.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search