Java解决跨域(后端转发方式)

背景

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。

通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。详细理论可以参考前端常见跨域解决方案这篇文章。

后端转发解决跨域

开发过程中经常能碰到这种场景,前端页面访问的是外部资源(跟前端应用部署的不是一台机器或者不是一个IP),此时常见的做法是通过 nginx 进行代理转发解决跨域。

代理转发要求被代理服务的域名(IP)固定,且具有统一前缀(最好),否则不但配置繁琐,还可能请求失败。

如果某个后端服务的请求路径不固定,则可以通过后端服务进行转发,这里以Java为例。

	@GetMapping("/cros")
    public void testCros(HttpServletResponse response) throws IOException {
        String url = "http://www.baidu.com";
        HttpGet httpGet = new HttpGet(url);
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse execute = httpClient.execute(httpGet);
        // 此处也可以设置一下响应头
        execute.getEntity().writeTo(response.getOutputStream());
    }

此时 请求咱们接口,前端调咱们后端的接口就可以访问想代理的链接了。

参考


版权声明:本文为wozaizhe56原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。