Нет доступа к Wikidata API

Я пытаюсь использовать API Викиданных, но получаю следующее:

API Fetch не может загрузить 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, безуспешно. Запуск ссылки в браузере (только без параметра origin) дает правильный ответ.


person Slaventsiy    schedule 07.04.2016    source источник
comment
В настоящее время CORS разрешен только из других доменов Викимедиа. JSONP должен работать. Дополнительные сведения см. В этом ответе.   -  person Tgr    schedule 08.04.2016
comment
Также см. phabricator.wikimedia.org/T62835, который представляет собой билет, озаглавленный «Разрешить междоменные запросы API в Ответы API в формате JSON, которые, вероятно, вам здесь помогут.   -  person Addshore    schedule 14.04.2016


Ответы (1)


Так почему вы вообще добавляете параметр origin? Просто оставьте его выключенным или добавьте «& callback = some_function», чтобы получить JSONP.

person Magnus Manske    schedule 07.04.2016
comment
Запрос JSONP работал после удаления параметра происхождения. Спасибо. - person Slaventsiy; 08.04.2016