首页 > 奇闻 > 正文内容

Vue项目代理配置解决跨域问题详解

奇闻2025-05-27 12:36:03

为啥我本地跑Vue项目的时候,浏览器老是弹出个红色错误提示?明明接口地址都写对了啊...特别是新手如何快速涨粉这类教程项目,调用第三方接口十有八九会遇到这种问题。这破错误搞得人血压飙升是不是?别慌,这玩意儿叫跨域问题,今天咱们就来手把手拆解它!

跨域说白了就是浏览器在搞事情。比如你本地项目跑在http://localhost:8080,要访问http://api.example.com的接口,浏览器觉得这两个地址不是一家人,直接给你掐断请求。这时候就需要代理配置来当中间人,帮你把请求"伪装"成同源的。

??准备工具就三样东西??:

  1. 安装了node环境的电脑
  2. vue-cli创建的项目
  3. 随便一个文本编辑器(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?这时候检查三点:

  1. 接口地址是不是真的存在
  2. 代理路径有没有多余斜杠
  3. 后端服务器有没有设置CORS头

开发环境和生产环境的区别得拎清楚:

环境代理方式需要配置的地方
开发环境webpack-dev-servervue.config.js
生产环境Nginx反向代理服务器配置文件

最后说个血泪教训:有次我死活调不通接口,折腾两小时发现是代理配置写错字母了。所以各位新手朋友,配置完一定要仔细检查拼写,别让这种低级错误浪费生命。跨域这玩意儿就像道门神,摸清套路之后其实也就那么回事,关键是得找准方法对症下药。

搜索