You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js使用http-proxy-middleware时无法从API获取图片问题排查

问题描述

配置http-proxy-middleware解决了CORS报错,其余功能运行正常,但调用API获取图片时出现异常,返回二进制乱码内容,想确认是否存在遗漏配置。
二进制乱码响应截图

相关配置代码

setupProxy.js

const { createProxyMiddleware } = require("http-proxy-middleware");

module.exports = function (app) {
  
  // GET Image
  app.use(
    "/file/",
    createProxyMiddleware({
      target: "https://.....",
      changeOrigin: true,
    })
  );
};

前端图片请求代码(user.js)

const loadImage = () => {
    setLgShow(true);

    var myHeaders = new Headers();
    myHeaders.append("Authorization", "Bearer abcdefghiklm");
    myHeaders.append("Content-Type", "application/json");

    var requestOptions = {
      method: "GET",
      headers: myHeaders,
      redirect: "follow",
    };
    fetch(`/file/${user.img_front_file_id}`, requestOptions)
      .then((response) => response.text())
      .then((result) => {
        console.log(result);
        imagRef.current = result;
        console.log(JSON.parse(result));
      })
      .catch((error) => console.log("error", error));
  };
问题原因

代理配置本身没有问题,异常是因为原本的请求处理逻辑直接将二进制图片响应用文本格式解析,所以会出现乱码,需要将响应以二进制blob格式处理,再转换为可访问的图片地址。

最终解决方案
const res = await axios({ 
  url: `/file/${user.img_front_file_id}`, 
  method: "GET", 
  headers: { 
    Authorization: "Bearer eFS3oJaQhRU1c5EajQUL", 
    "Content-Type": "application/json", 
  }, 
  responseType: "blob", 
}); 

const file = new Blob([res.data], { type: "image/jpg" }); 
const url = URL.createObjectURL(file); 
imagFontRef.current = url;

setFinishFront(true); 
console.log(res);

内容的提问来源于stack exchange,提问作者Four

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:48:02