一.什么是跨域?
跨域指的是浏览器不能执行其他网站的脚本,这是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。
二.什么是同源策略?
请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议都要相同,只要有一个不同,那就会产生跨域。
| 情况说明 | 是否允许通信 |
|---|---|
| 同一域名下 | 允许 |
| 同一域名下,不同文件夹 | 允许 |
| 同一域名下,不同端口 | 不允许 |
| 同一域名下,不同协议 | 不允许 |
| 同一域名,不同二级域名 | 不允许 |
| 主域相同,子域不同 | 不允许 |
| 域名和域名对应IP | 不允许 |
| 不同域名 | 不允许 |
三.跨域流程
从流程图可以发现跨域其实并不是请求发不出去,请求是能发出去的,同时服务端也能收到请求并且正常返回结果,只是结果被浏览器拦截了,所以没法进行到第三步。
四.如何解决跨域问题
- 使用nginx部署为同一域,请求都先发到nginx中,然后由nginx做路由和分发,这样就不会产生跨域问题。
- 配置当次请求允许跨域,这个方法是在代码里做具体实现,如果是做分布式的话,可以把跨域问题统一放在网关层处理。
总结
要做分布式微服务,跨域就是必须要解决的一个问题,当然了,解决跨域的方法有很多种,根据实际情况再面向百度编程比较实际。