Mock.js 拦截了二进制流数据的请求.md

背景

在一次开发中,客户提出我们提供的 SDK 无法正常使用,但是我们提供的 demo 可以正常使用。后经对比排查发现,客户的项目中引入了 Mock.js 而导致的 SDK 中对二进制资源的请求被拦截并进行了处理,导致请求的资源发生错误。

产生的原因

后通过在 Mock.js 的 repo issues 里也有搜索到 相关 issue

原因在于引入 Mock.js 发出请求后,服务器端返回的文件为二进制流,原生请求会正常的将其作为 blob 对象返回,而 Mock.js 则会将其转为字符串,Mock.js 完全重写了原生的 XMLHttpRequest。

如何解决

可以参考该 commit: https://github.com/Hugo-X/Mock/commit/2a6cc9ce7cfa407ce0036c187a6de1803f567884 修改 Mock.js 源码来解决这个问题。

也可以使用 better-mock 替代 Mock.js。

作者

spencer17x

发布于

2021-10-17

更新于

2024-03-12

许可协议

评论