umi-request
umi-request copied to clipboard
请问怎么配置才能拿到response header得值
当下载二级制文件时,需要从 response header种 读取文件名字, example: Content-Disposition: attachment;filename=result_excel.xlsx
请问怎么配置才能拿到response header得值
axios demo:
axios({
method: 'post',
url: ${UrlConfig.ajaxurl}rule/exportResultList
,
responseType: 'blob',
data: params,
headers: {
}
}).then(response => {
const fileName = window.decodeURI(response.headers['content-disposition'].split('=')[1]);
saveAs(response.data,fileName);
})
response.headers.get('content-disposition');
responseType: 'blob', parseResponse: false
response.headers.get('content-disposition')
据说是浏览器有限制,只能拿到几个默认的响应头,如果要拿到特殊响应头要服务端设置Access-Control-Expose-Headers。 我没试过,后台改在响应体里了。 http://t.zoukankan.com/lanshengzhong-p-10156933.html
据说是浏览器有限制,只能拿到几个默认的响应头,如果要拿到特殊响应头要服务端设置Access-Control-Expose-Headers。 我没试过,后台改在响应体里了。 http://t.zoukankan.com/lanshengzhong-p-10156933.html @magickeyyy 貌似并没有用,Access-Control-Expose-Headers: Content-Length, Content-Type, Cache-Control, Content-Language, Expires, Last-Modified, Pragma, Content-Range,X-Content-Range response.headers?.get('Content-Type')返回null; Access-Control-Expose-Headers请求头默认是包含Content-Type的 普通查询接口可以取到Access-Control-Expose-Headers中字段对应的值,但是下载接口返回null
request.interceptors.response.use(async (response: any, options: any) => { console.log('response interceptors response start', response, options) // 3.处理附件名称 // const disposition = response.headers?.['Content-Disposition'] || response.headers?.['content-disposition'] const disposition = response.headers?.get('Content-Type') || response.headers?.get('content-type') console.log('response interceptors response.headers, disposition', response.headers, disposition) if (disposition) { response.disposition = disposition } console.log('response interceptors response end', response) return response }, { global: true })
同样的拦截器在axios
中是可以生效的,不知道umi-request做了什么处理,响应头返回的数据都是空的;
@clock157
@chenshuai2144