Я пытаюсь использовать API викиданного, но все, что я получаю:не удается получить доступ к API викиданных
Fetch API не может загрузить 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. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение 'http://www.dev.example.com:3000', следовательно, не допускается. Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors» для извлечения ресурса с отключенным CORS.
Это код:
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);
});
Я попытался JSONP, а также, не успех. Запуск ссылки в браузере (только без параметра источника) дает правильный ответ.
В настоящее время CORS допускается только из других областей Викимедиа. JSONP должен работать. См. [Этот ответ] (http://stackoverflow.com/a/32868530/323407) для получения дополнительной информации. – Tgr
Также см. Https://phabricator.wikimedia.org/T62835, который представляет собой билет под названием «Включить запросы API междоменного интерфейса в ответах JSON API», которые, вероятно, помогут вам здесь. – Addshore