img标签加载图片时如何携带token

出于安全考虑,使用img标签展示图片时,需要在请求头添加token。尝试发现这种请求不经过axios的拦截请求,且不能以参数的方式携带token(不安全)

解决方法: 自定义一个组件(TokenImg)

import Axios from "axios"
import { useEffect, useState } from "react"

function TokenImg({ url, className }) {
    const [tempUrl, setTempUrl] = useState("")

    useEffect(() => {
        Axios.get(url, {
            headers: {
                Authorization: localStorage.getItem('token')
            },
            responseType: "blob" //将响应直接存储为 Blob 对象
        }).then(res => {
            const data = URL.createObjectURL(res.data)
            setTempUrl(data)
        })
    }, [])

    return (
        <img src={tempUrl} className={className} />
    )
}
export default TokenImg

使用:

import TokenImg from '@/components/tokenImg'
{/* 旧: */}
{/* <img src={url} className={styles.pic} ></img> */}

{/* 新的 */}
<TokenImg src={url} className={styles.pic}></TokenImg>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容