Skip to content

分布式跨域解决方案

什么是跨域问题

两个项目之间使用ajax实现通讯,如果浏览器的访问的域名地址和ajax访问的地址不一样,那么浏览器的默认安全机制会阻止此请求,导致无法获取返回结果。

如何解决跨域问题

1.使用jsonp,一般会前端的小伙伴都应该知道怎么配置(缺点,只适合于get请求,不支持post请求,使用麻烦。 2.使用httpclien进行转发, 前端先发送一个请求到后台,然后后台接口使用httpclient调用实际逻辑接口。(效率低,发两次请求) 3.设置响应头,允许跨域(有数据会配置了还是会出现跨域问题)

response.set('Access-Control-Allow-Origin', '*');

4.使用nginx,nginx有一个功能叫做反向代理,即为我们所有的请求,都发送给nginx然后由nginx进行转发,这样就不会出现跨域了。

server{
    # 监听8080端口
    listen 8080;
    # 域名是localhost
    server_name localhost;
    #凡是localhost:8080/api这个样子的接口,都转发到真正的服务端地址http://localhost:1616,这就是#nginx的反向代理特性 
    location  /api {
        proxy_pass http://localhost:1616;
    }