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
答案 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' })