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);
            },
        },
    },
},
相关推荐
GanGuaGua17 分钟前
Vue3:脚手架
前端·javascript·css·vue.js·vue
weixin_4316004439 分钟前
使用 Vue Tour 封装一个统一的页面引导组件
javascript·vue.js·ecmascript
大叔_爱编程1 小时前
p024基于Django的网上购物系统的设计与实现
python·django·vue·毕业设计·源码·课程设计·网上购物系统
胡斌附体2 小时前
vue添加loading后修复页面渲染问题
前端·javascript·vue.js·渲染·v-if·异步加载
Dontla2 小时前
Webpack DefinePlugin插件介绍(允许在编译时创建JS全局常量,常量可以在源代码中直接使用)JS环境变量
运维·javascript·webpack
沐土Arvin3 小时前
深入理解 requestIdleCallback:浏览器空闲时段的性能优化利器
开发语言·前端·javascript·设计模式·html
咖啡の猫4 小时前
JavaScript基础-创建对象的三种方式
开发语言·javascript·ecmascript
MaCa .BaKa4 小时前
38-日语学习小程序
java·vue.js·spring boot·学习·mysql·小程序·maven
outstanding木槿4 小时前
react中安装依赖时的问题 【集合】
前端·javascript·react.js·node.js
小吕学编程5 小时前
Jackson使用详解
java·javascript·数据库·json