图片请求加上token的方法记录,没有后端的token是不能单独打开图片的,vue+element里面的解决方法
1.组件的使用
<auth-pic
v-else
class="header-img"
:auth-src="
env
? scope.row.imgUrl
: scope.row.imgUrl
? '/api' + scope.row.imgUrl
: ''
"
></auth-pic>
2.组件具体的代码
<template>
<img ref="img" style="margin:0 auto;"></img>
</template>
<script>
import { getToken } from '@/utils/auth'
export default {
name: "AuthImg",
props: {
authSrc: {
type: String,
default: "",
}
},
mounted () {
let token = getToken()
Object.defineProperty(Image.prototype, 'authsrc', {
writable: true,
enumerable: true,
configurable: true
})
let img = this.$refs.img
let request = new XMLHttpRequest();
request.responseType = 'blob';
request.open('get', this.authSrc, true);
request.setRequestHeader('Authorization', 'Bearer '+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);
}
}
</script>