今天项目中合入了同事的代码,结果发现登录页的二维码图片加载失败了,奇怪的是登录页的代码我们都没有改动过,图片是将后端返回的的arraybuffer转为base64格式展示的。
调试了一两个小时还是无法解决图片加载失败的问题。
我将本地调试接口返回的数据与线上的接口返回做了对比。发现其中的data不太一样,本地是这样的
本地结果而线上是这样的
线上结果很明显data不一样,本地的data是乱码。
我百度了一番ajax中设置responseType为"arraybuffer"结果为乱码,终于找到了原因。印象中两年前也遇到过这个问题。
项目中引入了mock.js,而mock.js初始化了responseType,mockjs会影响到会影响原生的ajax请求,使得服务器返回的arraybuffer类型变成乱码。
参考链接:https://blog.csdn.net/qq_43020029/article/details/112294436
网友评论