配置代理服务器

配置代理——方式一

   俩台服务都准备完成

现在主要用来发起请求的第三方库都是axios

 

先下载引入axios

 出现跨域问题,注意的一点是服务器是拿到数据,但是并没有返回

解决跨域问题

1.cors

这要麻烦后端人员,就是在响应数据时设置一个特殊的响应头,让浏览器能直接拿到

2.jsonp script src 这是一个技巧,需要前后端一起努力,而且这只能解决get请求(实际开发不常用)

3.代理服务器

 类似于我们生活中的房屋中介

那么如何开启这个代理服务器呢?

1.nginx(后端技术要熟 )

2.vue-cli 

  

 

这里有一个小注意点,那就是这个代理服务器并不是所有的数据都向服务器要,如果它本身具有的资源,那么就不会向服务器要了

配置代理——方式二

当才的配置代理的方式,有几点不完美

1.只能配置一个代理

2.不能灵活的控制走不走代理

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: '<url>',
        ws: true,
        changeOrigin: true
      },
      '/foo': {
        target: '<other_url>'
      }
    }
  }
}

 

这两的配置项,不同同时配置,只能配置其中的一个 

/api这个是请求前缀

作用就是如果你有这个请求前缀,那么就通过target转发到你这个代理服务器上即target指向的地址

 

 错误的把/atguigu传给服务器了,因此我们要剔除它pathRewrite: { '^/atguigu': '' }

ws: true, //用于支持websocket

changeOrigin: true //用于控制请求头中的host值

总结

vue脚手架配置代理

方法一

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

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

说明:

1. 优点:配置简单,请求资源时直接发给前端(8080)即可。
2. 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。
3. 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源)

方法二

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

module.exports = {
	devServer: {
      proxy: {
      '/api1': {// 匹配所有以 '/api1'开头的请求路径
        target: 'http://localhost:5000',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api1': ''}
      },
      '/api2': {// 匹配所有以 '/api2'开头的请求路径
        target: 'http://localhost:5001',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api2': ''}
      }
    }
  }
}
/*
   changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
   changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080
   changeOrigin默认值为true
*/

说明:

1. 优点:可以配置多个代理,且可以灵活的控制请求是否走代理。
2. 缺点:配置略微繁琐,请求资源时必须加前缀。

猜你喜欢

转载自blog.csdn.net/weixin_64612659/article/details/129822890