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

如何在Webpack5 DevServer代理中传递请求头?含301重定向问题

解决Webpack 5 DevServer代理301重定向时无法传递原始请求头的问题

核心原因

Webpack DevServer的代理基于http-proxy-middleware,默认情况下,当后端返回301重定向时,代理在跟随重定向的过程中不会自动转发自定义请求头(比如Authorization),且之前的配置没有正确从原始请求中动态获取并传递所有请求头。

解决方案

修改代理配置,开启重定向跟随,并通过onProxyReq回调从原始请求中读取所有头信息,动态设置到代理请求中:

devServer: {
    historyApiFallback: true,
    open: true,
    compress: true,
    hot: true,
    port: 8099,
    allowedHosts: "all",
    headers: {
        'Access-Control-Allow-Origin': '*',
        "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
        "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
    },
    proxy : [
        {
            context: ['/backend'],
            target: "http://mybackend.com",
            secure: false,
            changeOrigin: true,
            followRedirects: true, // 开启跟随重定向
            onProxyReq: (proxyReq, req) => {
                // 动态传递原始请求的所有头信息
                Object.keys(req.headers).forEach(header => {
                    proxyReq.setHeader(header, req.headers[header]);
                });
                // 如需额外添加固定头,可在此补充
                // proxyReq.setHeader('additional-header', 'value');
            }
        }
    ]
}

关键配置说明

  • followRedirects: true:强制代理跟随后端的301/302重定向请求,避免直接将重定向响应返回给前端导致头信息丢失。
  • onProxyReq回调:通过req参数获取前端原始请求的所有头信息,遍历后设置到代理请求中,实现动态传递所有请求头,替代之前的静态头配置。

额外注意事项

  • 确认后端服务器允许重定向后的请求携带自定义头,部分后端会对重定向请求的头做限制。
  • 若涉及Authorization这类敏感头,需确保后端CORS配置允许该头跨域传递,避免后续请求被拦截。

内容的提问来源于stack exchange,提问作者Дмитрий Саламатов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:45:04