I’m trying to use the Wikidata API, but all I’m getting is:
Fetch API cannot load https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Ingmar%20Bergman&language=en&limit=20&format=json&origin=http%3A%2F%2Fwww.dev.example.com%3A3000. Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://www.dev.example.com:3000‘ is therefore not allowed access. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
This is the code:
const headers = new Headers(); const origin = "http://www.dev.example.com:3000"; headers.append("Origin", origin); headers.append("Content-Type", "application/json; charset=UTF-8"); const url = "https://www.wikidata.org/w/api.php"; const query = { action: "wbsearchentities", search: "Ingmar Bergman", language: "en", limit: 20, format: "json", origin }; const myInit = new Request(url + "?" + qs.stringify(query), { method: "GET", mode: "cors-with-forced-preflight", headers }); fetch(myInit) .then(function(res) { console.log(res); }) .catch(function(err){ console.log(err); });
I have tried JSONP as well, no success. Running the link in the browser (just without the origin parameter) gives a proper response.
Advertisement
Answer
So why do you add the “origin” parameter at all? Just leave it off, or add “&callback=some_function” to get JSONP.