vue img 图片需要自定义请求头

在做项目的时候,展示图片可能会用到nginx 的代理来进行展示,然而有些运维小哥哥喜欢展示技术,在展示图片的时候还需要前提传一个请求头,也就是账号和密码。在postman展示的情况如下:
在这里插入图片描述
如果不使用这种方式,页面直接展示401没有权限。
在这里插入图片描述
在这里插入图片描述

解决方法

运维小哥哥一回头,搞得菜鸡的我就加班搞这个玩意,最后总结解决方法如下:

postman 请求源码

在这里插入图片描述

img标签请求携带请求头

我们现在跨域思考一下,img标签是没有可以自定义请求头的。网上说的那些,个人感觉都不行,一个爬一个。
我的解决办法

分析: img src 是会自动发送请求的,所以我们可以认为src 里面的就是一个接口,只是该接口返回的是图片流数据,那么我们就可以在拿到图片地址的时候再来一次axios请求,在本次请求中加入请求头。

代码如下

/**
 * 获取base64位的图片
 * @param fileName {String} 文件名称
 * @param caseId {String} 赔案号
 * @returns {Promise<string>}
 */
export async function getImgURLOfBase64(fileName, caseId) {
  // 这里获取图片的地址,如果知道地址,直接绕过这部
  const res = await getImgUrl({
   // ...获取图片地址的参数
  })
  if (!res.data || res.data.length === 0) return '';
  // 通过图片地址获取图片,从新获取图片
  var config = {
    method: 'get',
    responseType: 'arraybuffer',
    url: '对应地址',
    headers: {
     // postman 中的请求头
    }
  };
  // 重新获取请求,获取的是base64位的图片
  return await axios(config).then(response => {
    return 'data:image/png;base64,' + btoa(new Uint8Array(response.data).reduce((data, byte) => data + String.fromCharCode(byte), ''));
  })


}

把上面获取的base位的图片地址放在对应img src 里面就行了。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41499782

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值