我在S3上托管了大型静态JSON文件,其中包含视频文件的脚本,我很难使用
fetch()
Axios
. JSON文件的大小在50-100KB之间,请求似乎在整个文件下载之前就已经完成了-开发人员控制台显示了状态为200的文件到达,但是我在浏览器中发现了错误:
private subtitleUri: string = "https://static.edyoutoo.media/subtitles/167A0DFC566B971A/167A0DFC566B971A-O.json"
// using fetch api
async $fetch(): Promise<SubtitleEntity> {
const blob = await fetch(this.subtitleUri)
console.log(blob)
const json = await blob.json()
console.log(json)
return json
}
// using axios
async fetch(): Promise<SubtitleEntity> {
const ax = Axios.create()
try {
const req = await ax.get(this.subtitleUri)
console.log(req)
return req.data
} catch (err) {
console.error(err)
}
}
这个
SubtitleEntity
在尝试之后,我在控制台中得到这个错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://static.edyoutoo.media/subtitles/167A0DFC566B971A/167A0DFC566B971A-O.json. (Reason: CORS header âAccess-Control-Allow-Originâ missing).
我假设这是因为在整个数据到达之前,响应就已经结束了。
Postman
以测试请求并按预期传递数据。
在Dev Tools的Network选项卡中,请求显示为响应代码200,数据是
所有这些,有时,它会显示以下错误:
SyntaxError: JSON.parse: end of data when property name was expected at line 855 column 3 of the JSON data
我做错什么了?我来自一个Java/C++背景,我们简单地将传入的数据收集到一个while循环中的字符缓冲区中,一旦请求完成,数据就被解析并返回给调用方。
如何使用AXIOS库或FETCH API完成?为什么它要在请求结束前解决未来(承诺)?
谢谢你的帮助。