vue3请求代理proxy中pathRewrite失效

问题引入

在vue3配置请求代理proxy的时候pathRewrite失效。

有这样一个例子,作用是为了把所有以/api开头的请求代理到后端的路径和端口上,在vue.config.js配置文件中 设置了代理跨域和默认端口。但是重新运行之后发现端口是改了,但是路径仍然没有修改,没有把我/api带头的路径重写掉

vue.config.js

vue 复制代码
devServer: {
    open: true, // opens browser window automatically
    proxy: {
        // 将所有以/api开头的请求代理到
        "/api": {
        	target: "http://localhost:8080",
            pathRewrite: {
                "^/api": "",
            },//没有任何效果
            changeOrigin: true,
        },
    },
},

控制台中无法看到转发后的路径,使用以下方法可以在浏览器控制台Response Header中看见x-res-proxyUrl转发后真实路径

vue.config.js

vue 复制代码
devServer: {
    open: true, // opens browser window automatically
    proxy: {
        // 将所有以/api开头的请求代理到
        "/api": {
        	target: "http://localhost:8080",
            pathRewrite: {
                "^/api": "",
            },//没有任何效果
            changeOrigin: true,
            // 显示请求代理后的真实地址
            bypass(req, res, options) {
                const proxyUrl = new URL(req.url || "", options.target)?.href || "";
                res.setHeader("x-res-proxyUrl", proxyUrl);
            },
        },
    },
},

解决方案

vue3中不支持pathRewrite的写法,可以修改为

vue 复制代码
rewrite: (path) => path.replace(/^\/api/, ""),

vue.config.js

vue 复制代码
devServer: {
    // https: true
    open: true, // opens browser window automatically
    proxy: {
        // 将所有以/api开头的请求代理到
        "/api": {
            target: "http://localhost:8080",
            //改成这样!!!!
            rewrite: (path) => path.replace(/^\/api/, ""),
            changeOrigin: true,
            // 显示请求代理后的真实地址
            bypass(req, res, options) {
                const proxyUrl = new URL(req.url || "", options.target)?.href || "";
                res.setHeader("x-res-proxyUrl", proxyUrl);
            },
        },
    },
},
相关推荐
kyriewen9 小时前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试
山河木马10 小时前
矩阵专题2-怎么创建视图矩阵(uViewMatrix)
javascript·webgl·计算机图形学
tangdou36909865512 小时前
AI真好玩系列-2分钟快速了解DeepAgents | Quick Guide to DeepAgents in 2 Minutes
前端·javascript·后端
张元清12 小时前
React useIntersectionObserver Hook:懒加载与可见性检测(2026)
javascript·react.js
彭于晏爱编程12 小时前
纯 JS + Node,一个下午手搓了能读懂公司代码的 AI 助手,老板以为我转行了
前端·javascript
妙码生花13 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十四):眨眼小人登录页制作
前端·javascript·ai编程
妙码生花13 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十三):前端路由初始化
前端·javascript·ai编程
PBitW13 小时前
GPT训练我的第四天,被打惨了!!!😭😭😭
前端·javascript·面试
DarkLONGLOVE13 小时前
快速上手 Pinia!Vue3 极简状态管理使用教程
javascript·vue.js
mackbob13 小时前
.eslintrc.js详细配置说明
javascript