javascript - Fetch/Axios - 在承诺解决之前下载大型静态 JSON 文件不完整的数据
问题描述
我在 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
接口只是 JSON 对象的形状
尝试后,我在控制台中收到此错误:
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).
我假设这是因为响应在全部数据到达之前就解决了。资源上的 CORS 权限工作正常 - 我曾经Postman
测试请求并且数据按预期交付。
在开发工具的网络选项卡中,请求显示响应代码 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 完成的?为什么在请求结束之前解决未来(承诺)?
谢谢你的帮助。
解决方案
推荐阅读
- json - 将本机 Concat 字符串反应到 Json 对象
- c# - 为什么我可以从命令行运行我的 ASP.NET Core MVC 应用程序,但不能通过按 F5 从 Visual Studio 运行?
- python-3.x - 我想在一行中取两个整数并在python3中计算它们的总和
- dll - 使用多变量函数时出现 Fortran DLL 错误
- security - 如何修复 Laravel 5.2.45 版中的“URL 重写漏洞”
- r - 使用gglot2的嵌套图
- c++ - OpenGL 窗口伪影
- r - 从数据框中的列中添加和减去值
- bash - 如何提取活动域
- php - Ajax 搜索结果,点击结果下载文件