Vite配置:如何捕获所有请求,仅代理符合规则的请求并保留静态文件本地服务
Vite代理规则配置:仅转发符合条件的请求
你可以通过Vite代理配置中的bypass函数实现需求——让静态文件由开发服务器处理,仅当请求符合指定条件时才转发到后端。修改后的配置如下:
server: { proxy: { '^.*': { target: 'https://backend.com', secure: false, changeOrigin: true, ws: true, bypass: (req, res, options) => { // 匹配静态文件(index.html、app.js等),直接交给开发服务器处理 const staticFileRegex = /\.(html|js|css|svg)$/; if (staticFileRegex.test(req.url || '')) { return ''; } // 检查请求是否符合代理条件 const acceptHeader = req.headers['accept'] || ''; const isJsonRequest = acceptHeader.includes('application/json'); const isImageRequest = /\.(png|jpg|jpeg|gif|webp)$/.test(req.url || ''); // 不符合条件的请求,交给开发服务器处理 if (!isJsonRequest && !isImageRequest) { return ''; } // 符合条件,继续执行代理逻辑 return false; } } } }
配置说明:
bypass函数在代理请求触发前执行:返回非空字符串时,请求会被转发到开发服务器;返回false时,请求会按代理规则转发到后端。- 首先通过正则匹配静态文件后缀(html、js、css、svg等),这类请求直接由开发服务器提供服务。
- 接着判断两个代理条件:
- 请求头
accept包含application/json - 请求路径是图片格式(png、jpg、jpeg等)
- 请求头
- 只有满足其中一个条件的请求才会被代理到后端,其余请求都由开发服务器处理。
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

