Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

引入mock后,axios响应头的responseType失效,导致乱码了 #434

Open
boluo-muma opened this issue Nov 19, 2020 · 5 comments
Open

Comments

@boluo-muma
Copy link

引入mock后,axios响应头的responseType:blob‘’失效,导致乱码了。。。。这个是否解决呢

@wll8
Copy link

wll8 commented Feb 26, 2021

可以解决的,有两个方式,在拦截处判断响应头再进行 return。或者使用 https://github.com/wll8/mockm

@oh-bala
Copy link

oh-bala commented Jul 26, 2021

如果未匹配到数据模板,Mockjs会初始化原生XHR对象,这个过程导致设置axios里设置的responseType没有起作用。
所以,如果在使用类似axios({ responseType: "arraybuffer" })的时候,这个设置并没有起作用的原因。

  1. 在axios的xhr开始open时(axios::xhr.js),mockjs对其xhr对象进行了初始化,并将原生xhr的设置复制给了mockjs xhr对象,这个过程没有设计到responseType的设置(mockjs::mock.js)
  2. axios的xhr对象在执行send之前,对responseType进行了设置(这个过程没有对mockjs的xhr对象设置同样的responseType)
  3. 在执行send时,mockjs开始判断,如果没有匹配到数据模板,则启用原生的xhr对象执行,这个时候mockjs将它的xhr设置复制给原生的xhr对象。

这个过程中第2步的执行是没有将responseType值继承的。

#426 这个issue应该也不能解决这个问题,可能axios的config.responseType能在open前复值给request对象就可以了。

@tianxiaozi
Copy link

如果未匹配到数据模板,Mockjs会初始化原生XHR对象,这个过程导致设置axios里设置的responseType没有起作用。 所以,如果在使用类似axios({ responseType: "arraybuffer" })的时候,这个设置并没有起作用的原因。

  1. 在axios的xhr开始open时(axios::xhr.js),mockjs对其xhr对象进行了初始化,并将原生xhr的设置复制给了mockjs xhr对象,这个过程没有设计到responseType的设置(mockjs::mock.js)
  2. axios的xhr对象在执行send之前,对responseType进行了设置(这个过程没有对mockjs的xhr对象设置同样的responseType)
  3. 在执行send时,mockjs开始判断,如果没有匹配到数据模板,则启用原生的xhr对象执行,这个时候mockjs将它的xhr设置复制给原生的xhr对象。

这个过程中第2步的执行是没有将responseType值继承的。

#426 这个issue应该也不能解决这个问题,可能axios的config.responseType能在open前复值给request对象就可以了。

能不能给个具体的解决方法?

@tanhh326
Copy link

可以不使用xhr,改为fetch获取文件blob。 (^o^)/~

@ygweric
Copy link

ygweric commented Sep 12, 2023

这个仓库已经不维护了,我fork了一份已经解决,可以使用我fork的仓库 tony-mockjs

npm i tony-mockjs

我的代码里里面使用了threejs,具体的responseType值会是 text|ArrayBuffer|json,目前工作良好

具体核心代码如下

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants