使用Wikipedia API的fetch()导致“TypeError:尝试获取资源时出现NetworkError”。

时间:2016-05-19 20:37:56

标签: javascript fetch wikipedia-api

fetch('https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json')
    .then(  
        function(response) {  
            if (response.status !== 200) {  
                console.log('Looks like there was a problem. Status Code: ' + response.status);  
                return;  
            }

            // Examine the text in the response  
            response.json().then(function(data) {  
                console.log(data);  
            });  
        }  
    )
    .catch(function(err) {  
        document.write('Fetch Error :-S', err);  
    });

此处列出了我正在使用的提取地址:简单示例下的https://www.mediawiki.org/wiki/API:Main_page。目前它使用TypeError: NetworkError when attempting to fetch resource.来捕获底部的错误到目前为止,在使用fetch()尝试不同的东西之后,我无法从API访问任何数据

任何帮助将不胜感激!

该项目位于codepen上:http://codepen.io/javascriptisscary/pen/RazKWB

2 个答案:

答案 0 :(得分:3)

问题是由fetch()使用CORS引起的。但是,当我更改为mode: "no-cors"时,我不再阻止跨源请求,但状态代码为0。

根据谷歌的这篇文档:https://developers.google.com/web/updates/2015/03/introduction-to-fetch?hl=en

“'no-cors'旨在向其他没有CORS标头并且导致不透明响应的来源发出请求,但是如上所述,目前在窗口全局范围内这是不可能的

所以目前要访问维基百科api,必须采用与fetch()不同的方式

答案 1 :(得分:0)

以上答案正确。关于在何处设置“模式”的注释,只需执行以下操作:

 fetch(url, { mode: 'no-cors' })