分布式解决方案( 跨域问题的解决)

本文主要介绍由分布式系统带来的各种跨域问题的解决方案。(本文只涉及少量代码,仅提供解决方案)

1.什么是跨域问题?

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

 

2.如何解决跨域问题?

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;
    }    
}

5.使用微服务中的zuul。如果觉得nginx中的不是太好用,那么这个时候我们直接使用springcloud中的网关,由网关来统一请求前缀。来解决跨域问题。

 

 这里只做解决方案,具体实现下面博客有提供

          -------------------------------本文详细实现https://segmentfault.com/a/1190000015597029

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值