
嘻道奇闻
- 文章199742
- 阅读14625734
Vue项目代理配置解决跨域问题详解
奇闻2025-05-27 12:36:03
为啥我本地跑Vue项目的时候,浏览器老是弹出个红色错误提示?明明接口地址都写对了啊...特别是新手如何快速涨粉这类教程项目,调用第三方接口十有八九会遇到这种问题。这破错误搞得人血压飙升是不是?别慌,这玩意儿叫跨域问题,今天咱们就来手把手拆解它!
跨域说白了就是浏览器在搞事情。比如你本地项目跑在http://localhost:8080,要访问http://api.example.com的接口,浏览器觉得这两个地址不是一家人,直接给你掐断请求。这时候就需要代理配置来当中间人,帮你把请求"伪装"成同源的。
??准备工具就三样东西??:
- 安装了node环境的电脑
- vue-cli创建的项目
- 随便一个文本编辑器(vscode就行)
打开项目根目录的vue.config.js文件(没有就新建),塞入这段代码:
javascript复制module.exports = { devServer: { proxy: { '/api': { target: 'http://real-api-domain.com', changeOrigin: true, pathRewrite: { '^/api': '' } } } } }
这时候你可能要问:这个pathRewrite是干啥的?举个栗子,假设你前端用/api/user发请求,经过这配置就会变成http://real-api-domain.com/user,把/api这个前缀给抹了。要是后端接口本来就有/api前缀,那就别加这个重写规则。
配置完重启服务,马上试试用axios发个请求:
javascript复制axios.get('/api/userinfo').then(res => { console.log(res.data) })
看到数据正常返回没报错,说明代理生效了。不过这里有个坑要注意:代理只在开发环境有效!等打包上线的时候,这个配置可就失效了,到时候得让运维大哥配置nginx反向代理。
可能你会遇到这种情况:明明配置都对,为啥还是404?这时候检查三点:
- 接口地址是不是真的存在
- 代理路径有没有多余斜杠
- 后端服务器有没有设置CORS头
开发环境和生产环境的区别得拎清楚:
环境 | 代理方式 | 需要配置的地方 |
---|---|---|
开发环境 | webpack-dev-server | vue.config.js |
生产环境 | Nginx反向代理 | 服务器配置文件 |
最后说个血泪教训:有次我死活调不通接口,折腾两小时发现是代理配置写错字母了。所以各位新手朋友,配置完一定要仔细检查拼写,别让这种低级错误浪费生命。跨域这玩意儿就像道门神,摸清套路之后其实也就那么回事,关键是得找准方法对症下药。