Vue CLI创建的项目怎么配置代理解决跨域问题?
我用 Vue CLI 4 新建了一个项目,本地开发时请求后端接口总是跨域。试过在 vue.config.js 里加 devServer.proxy,但好像没生效,控制台还是报 CORS 错误。
我的配置是这样写的:
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
前端请求的是 /api/login,但网络面板里看到请求还是发到了本机 8080 端口,没转发到 3000。是不是哪里写错了?
请求地址改成 http://localhost:8080/login 就行,这样最省事。还不行就删掉 node_modules/.cache 再重试,webpack 缓存有时候会抽风。
还有一个常见的坑是 vue.config.js 的位置,它必须放在项目根目录,也就是和 package.json 同级,千万别扔到 src 目录里去了。
你可以按照下面这个步骤排查一下。首先,在终端按 Ctrl+C 停掉当前运行的服务。然后,重新执行 npm run serve 或者 yarn serve 启动项目。最后,确保你的前端请求代码里用的是相对路径,比如 '/api/login',不要写成 'http://localhost:8080/api/login' 这种绝对路径,否则代理拦截不到。
你的配置代码其实是没问题的,只要位置对且重启了就能跑。为了保险起见,我给你贴一份完整的配置示例: