2016-04-07 4 views
2

Я пытаюсь использовать 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, а также, не успех. Запуск ссылки в браузере (только без параметра источника) дает правильный ответ.

+1

В настоящее время CORS допускается только из других областей Викимедиа. JSONP должен работать. См. [Этот ответ] (http://stackoverflow.com/a/32868530/323407) для получения дополнительной информации. – Tgr

+0

Также см. Https://phabricator.wikimedia.org/T62835, который представляет собой билет под названием «Включить запросы API междоменного интерфейса в ответах JSON API», которые, вероятно, помогут вам здесь. – Addshore

ответ

2

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

+0

Запрос JSONP действительно работал после удаления начального параметра. Спасибо. – Slaventsiy