Axios GET请求触发浏览器文件下载

5 篇文章 0 订阅
1 篇文章 0 订阅

Axios GET请求触发文件下载

1.设置responseType: ‘blob’
let data = await axios.get(url, {
    responseType: 'blob',
    params: params
 });
 //这里的data应该是拿到了一个Blob的流
2. 创建虚拟a标签,点击触发浏览器下载
const $link = document.createElement('a');
$link.href = URL.createObjectURL(data);
$link.download = name;
$link.click();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用Vue的post请求时,有时候会遇到请求被浏览器自动转换为get请求的情况,这是因为浏览器对post请求的处理机制涉及到各种不同的原因。其中主要的几个原因如下: 1. 表单数据格式:当我们使用表单提交数据时,表单的默认提交方式就是get请求,这是因为浏览器会自动将表单数据序列化成query string并放到URL的参数中。如果采用了post方式,浏览器也会将表单数据序列化到URL中,并且在访问后端时就会自动转为get请求。 2. 重定向:有时候后端会在post请求处理之后,对请求进行重定向,这个重定向可能是在请求头中添加Location的响应头。如果浏览器接收到这个重定向响应,在访问新的URL时,就会自动转换为get请求。 3. 缓存:有些浏览器在发送post请求时会检查本地是否有已经缓存的相同请求,如果有则自动转为get请求,这是为了减少冗余的网络请求。 针对这种问题,我们可以采用以下几个方法来解决: 1. 使用axios等库:这些库通过封装XMLHttpRequest对象,可以自定义请求方式,并且避免了上述的问题。 2. 添加请求头:通过在请求头中添加Content-Type: application/json等属性,可以指定post请求要发送的数据格式,并且防止重定向等问题。 3. 禁用缓存:可以通过在请求头中添加Cache-Control: no-cache等属性,来禁用浏览器的缓存机制。 总之,要解决post请求被转为get请求的问题,我们需要仔细查看请求的处理流程,避免触发上述问题,并在需要的时候自定义请求头,保证发送的数据格式正确,从而使请求得到正确的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值