【发布时间】:2019-01-17 09:16:52
【问题描述】:
当我尝试从 Tibia API 获取 JSON 时,我得到了两件事。
错误:tibia.js:8 Uncaught (in promise) SyntaxError: Unexpected end of input
警告:跨域读取阻塞 (CORB) 阻止了跨域响应 https://api.tibiadata.com/v2/characters/Burdeliusz.json
class Tibia {
constructor() {}
async getCharacter(char) {
const characterResponse =
await fetch(`https://api.tibiadata.com/v2/characters/${char}.json`, {
mode: 'no-cors'
});
const character = await characterResponse.json();
return {
character
}
}
}
我搜索了类似的问题,但找不到解决方法。
【问题讨论】:
-
使用
{mode:'no-cors'}发出的任何获取请求都会导致不透明的回复,这意味着您不能使用res.json()或.text()或dot-anything。来自 MDN; 此外,JavaScript 可能不会访问结果响应的任何属性。 developer.mozilla.org/en-US/docs/Web/API/Request/mode -
那么,我无法从这个 API 获取数据?
-
查看我的答案,您可以使用代理访问它。见jsfiddle.net/RouzbehHz/b95vcdhm/2(等一下,tibiadata.com 的响应速度很慢)
-
是的,您需要使用代理(嘘...但可以)或启动您自己的后端服务器来为您获取数据。如果你只是需要它又快又脏,那就去代理吧。
-
@D.Wasilewski 太棒了!很高兴能帮上忙,编码愉快! :)
标签: javascript promise cors