相关疑难解决方法(0)

Wikipedia API是否支持CORS或仅支持JSONP?

这个问题与一年前提出的另一个问题有关.作者询问如何使用JavaScript和Wikipedia API制作cros-origin请求,其中一条评论是:

en.wikipedia.org似乎不允许使用CORS

并建议他改用JSONP.

我知道我可以使用JSONP,但如果可以使用它,我更喜欢CORS.

我试过jsfiddle

var url = "https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json";

                $.ajax({
                    url: url,
                    data: 'query',
                    dataType: 'json',
                    type: 'POST',
                    headers: { 'Api-User-Agent': 'Example/1.0' },
                    origin: 'https://jsfiddle.net/',
                    success: function (data) {
                        console.log(data);
                        //do something with data
                    }});
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

XMLHttpRequest无法加载 https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" https://fiddle.jshell.net "访问.

请求标题:

authority:en.wikipedia.org
method:OPTIONS
path:/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json
scheme:https 
accept:/ 
accept-encoding:gzip, deflate, sdch 
accept-language:en-US,en;q=0.8,fr-CA;q=0.6,fr;q=0.4,fr-FR;q=0.2,ru;q=0.2,uk;q=0.2 
access-control-request-headers:accept, api-user-agent, content-type 
access-control-request-method:POST 
origin:https://fiddle.jshell.net 
referer:https://fiddle.jshell.net/_display/ 
user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

响应标题:

accept-ranges:bytes 
age:0 
backend-timing:D=33198 t=1462749020308717 
cache-control:no-cache 
content-encoding:gzip 
content-length:20 …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jsonp wikipedia-api cors

8
推荐指数
1
解决办法
2362
查看次数

标签 统计

cors ×1

javascript ×1

jquery ×1

jsonp ×1

wikipedia-api ×1