无法访问Wikidata API

时间:2016-04-07 13:50:49

标签: javascript cors mediawiki-api wikidata wikidata-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,但没有成功。在浏览器中运行链接(只是没有origin参数)会给出正确的响应。

1 个答案:

答案 0 :(得分:2)

那你为什么要加上"起源"参数完全?只需将其关闭,或添加"& callback = some_function"获得JSONP。