官网解释:
意思是:当进行代理时,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的值。