跨域(三):代理解决跨域问题

之前讲到了解决跨域的两种方式:JSONPCORS ,都是需要在被调用方来修改代码解决的。

我们还可以通过代理方式,在调用方来解决跨域问题。

代理解决跨域问题

代理解决跨域问题的思路是:让发送出去的请求代理成是本域的

举个例子:

1
2
192.168.10.1:8080 是调用方
192.168.10.2:8080 是被调用方

它俩是不同域的,但我们可以在 nginx 或 Apache 上进行配置代理:将被调用方 192.168.10.2:8080 射成别的路径

1
2
3
4
5
6
7
8
9
10
11
12
13
http {
server {
listen 80;

location /{
proxy_pass http://192.168.10.1:8080;
}

location /test{
proxy_pass http://192.168.10.2:8080;
}
}
}

比如上面,nginx 运行在 192.168.10.1 上,nginx 将 192.168.10.2:8080 端口的映射成了 test ,当调用方访问 test 路径时,这样的方法在外部看起来就不像是跨域了,像是访问本地(http://192.168.10.1:8080),但实际访问别的域(http://192.168.10.2:8080)。

总结

以上就是解决跨域的三种方式:JSONPCORS 、代理。

最简单的是通过 Spring 的注解就可以解决跨域的问题了,JSONP 的方式已经是很少用的了,因为存在一定的弊端。当我们无法改动被调用方代码时,可以使用代理解决跨域问题。