Vue-Cli devServer.proxy 配置代理服务,解决跨域请求报错的问题

如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器。这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置。

方法一

在vue.config.js中添加如下配置:

devServer:{
  proxy:"http://localhost:5000"  
}

说明:

1、优点:配置简单,请求资源时直接发给前端(8080)即可

2、缺点:不能配置多个代理,不可灵活的控制请求是否走代理

3、工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器(优先匹配前端资源)

例如:http://localhost:8080/student

若前端public目录下有student,会优先获取public下的student

若前端public目录下没有student,才会请求 http://localhost:5000/student

 

方法二

编写vue.config.js 配置具体代理规则:

  //使用时是: http://localhost:8080/api1/student
  //会转成:http://localhost:5000/api1/student
modul.exports={
  devServer:{
        proxy:{
           '/api1':{ //匹配所有以 ‘/api1’开头的请求路径
                target:'http://localhost:5000', //代理目标的基础路径
                changeorigin:true,
                pathRewrite:{'^/api1':''}//重定向
                 //将原来的 http://localhost:5000/api/student
                 //重定向为 http://localhost:5000/student
            },
           '/api2':{ //匹配所有以 ‘/api2’开头的请求路径
                target:'http://localhost:5001', //代理目标的基础路径
                changeorigin:true,
                pathRewrite:{'^/api2':''}
            },
        }               
    }  
}            

changOrigin设置为true时,服务器收到的请求头中的host为 localhost:5000

changOrigin设置为false时,服务器收到的请求头中的host为 localhost:8080

changeOrigin默认值为true

说明:

1、优点:可以配置多个代理,且可以灵活的控制请求是否走代理

2、缺点:配置略微繁琐,请求资源时必须加前缀

 

posted @ 2023-03-17 22:04  codeing123  阅读(486)  评论(0编辑  收藏  举报