img使用src动态请求图片,同时需要设置请求头header的问题

目前做的项目里面有个二维码是动态加载出来的,最初使用vue双向绑定src实现了src能自动请求图片。
html

<img :src="src">

js

data:{
	src:''
},
mounted: function(){
	this.src = 'xxxxx/xxxxx/xxx?phoneNum='+phoneNum+'&width=200&height=200'
}

但是后台加上鉴权后,需要每个接口在header里面加上token,查找相关方法后只好舍弃了这种做法,改用最原始的ajax去请求。
html

<img id="img" authsrc="/xxxx/xxxx/xxxx" alt="">

js

Object.defineProperty(Image.prototype, 'authsrc', {
    writable : true,
    enumerable : true,
    configurable : true
  })
  var img = document.getElementById('img');
  var url = img.getAttribute('authsrc');
  var request = new XMLHttpRequest();
  request.responseType = 'blob';
  request.open('get', url+'?phoneNum='+phoneNum+'&width=200&height=200', true);
  request.setRequestHeader('actoken', token);
  request.onreadystatechange = e => {
      if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
          img.src = URL.createObjectURL(request.response);
          img.onload = () => {
              URL.revokeObjectURL(img.src);
          }
      }
  };
  request.send(null);

这样,就可以使用request.setRequestHeader(‘actoken’, token)来设置请求头了,如果url参数不能在src里面写死,大家可以向上面那样在open里面加上相关参数,然后就可以正常加载出来了。

原文地址:https://segmentfault.com/a/1190000020366227

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值