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);
            },
        },
    },
},
相关推荐
wuhen_n2 小时前
JavaScript链表与双向链表实现:理解数组与链表的差异
前端·javascript
wuhen_n2 小时前
JavaScript数据结构深度解析:栈、队列与树的实现与应用
前端·javascript
我是一只puppy2 小时前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
颜酱2 小时前
从二叉树到衍生结构:5种高频树结构原理+解析
javascript·后端·算法
TT哇3 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
星光不问赶路人4 小时前
vue3使用jsx语法详解
前端·vue.js
Mr Xu_4 小时前
Vue 3 中计算属性的最佳实践:提升可读性、可维护性与性能
前端·javascript
子兮曰4 小时前
深入理解滑块验证码:那些你不知道的防破解机制
前端·javascript·canvas
Highcharts.js4 小时前
【Highcharts】如何用命令行渲染导出图片?
javascript·导出·开发文档·highcharts·命令行渲染·命令行功能
weixin79893765432...5 小时前
Vue 组件的更新过程(编译系统 + 响应式系统 + 虚拟 DOM & Diff)
vue.js