官网解释:

意思是:当进行代理时,Host 的源默认会保留(即Host是浏览器发过来的host),如果将changeOrigin设置为true,则host会变成target的值。

在vue-cli3中,默认changeOrigin的值是true,意味着host设置成target,这与cue-cli2不一致,vue-cli2这个默认值是false。

(1)、当changeOrigin值为false时,即host就是浏览器发送过来的host

//设置跨域
    proxy: {
      '/api': {
        target: 'http://localhost:8002',
        changeOrigin: false
      }
    }

在后端获取Host的值

@PostMapping("/captcha")
    public Result codeImg(HttpServletRequest request) throws Exception {
        String host = request.getHeader("Host");
        System.out.println(host);
        return userService.getCaptcha();

    }

结果为:localhost:81,即后端获取的Host为前端浏览器的host。

(2)、当changeOrigin值为true时,即host设置成target

//设置跨域
    proxy: {
      '/api': {
        target: 'http://localhost:8002',
        changeOrigin: true
      }
    }

在后端获取Host的值:localhost:8002,即为node服务器代理之后的请求后台的host。

  有些人可能会通过浏览器 F12 查看 request Header 的 Host,发现它无论怎么修改 changeOrigin,host它均为前端服务器地址(http://localhost:81)。于是就认为 changeOrigin: true 无效。其实不然。而且,设置已经生效了,只是浏览器不会直观地显示给你。

注意:changeOrigin为true并不是打开代理的,它只会影响后台获取的host的值。

 

posted on 2022-10-12 18:59  周文豪  阅读(6217)  评论(0编辑  收藏  举报