跨域和单点登录的实现方式
“域” 是什么?
经常听人提起"域"这个术语, 那么域是什么呢? 域 就是 协议和域名和端口的集合体,
或者说是 协议, ip 和端口的机会
对于两个网址, 这三者有任意一个不相同, 就说它们不在同一"域"下, 而不在同一域下的两个网站的交互, 就会受到浏览器同源策略的约束
如何跨域?
首先, 网页上有两个html标签是可以正常跨域的, 那就是 <scirpt>
和 <img>
, 我们可以利用这两个标签访问其他域的资源.除了这两个标签以外, 访问其他域的 api均会受到限制而不能正常工作. 下面我来介绍 两种跨域方法.
- JSONP
使用jsonp, 前端后端协调好一个接口提供给前端, 前端调用时后端返回数据给前端.
缺点: 只能使用 get 请求, 任何人可以调用接口拿到数据, 实现跨域. 不安全 - CORS 阮一峰老师说CORS
服务器实现CORS接口, 前端就能正常跨域. 服务器配置能互相跨源的域和能跨源的 cookie后. 前端就能正常实现跨源了, 整个过程由浏览器和服务器自动实现, 前端人员无需操心. 具体实现步骤如下 详情可以参考阮一峰老师说CORS 前端在进行跨域请求时, 浏览器设置请求头字段Origin, 服务器后端检查Origin看是否可以跨域, 如果可以跨域, 就返回请求的数据,并设置CORS相关的响应头字段.
如何实现单点登录功能.
参考文章: https://developer.aliyun.com/article/636281
单点登录的应用在多个应用之间只登录一次, 却能在多个应用上利用这次登录请求而不用再次登录而保持登录状态, 在用户看来就像是一个应用.
- 同源单点登录
- 不同源单点登录.
我还没有完全掌握, 想要了解的可以参考前面的参考文章
#TODO:// 挖个坑, 以后再补