在此只是记录一下本身在尝试SSO跨域实现的过程当中学到的几种跨域方案,不包含任何例子和具体的实现方法。nginx
最近在尝试SSO的跨域,看了好多资料,而后本身记录了一下能够实现的方法:ajax
①跳转全部站点设置cookie跨域
除了①,其他的都是以一个主站点将 ticket 保存到该站点的域下,其他的域经过不一样的方法来获取主域下的cookie安全
②主域(页面重定向):
优势:
一、中间域站点能够设置为 https ,保障传输安全性
缺点:
一、有重定向动做,用户体验很差
二、若是用 https ,接入门槛高cookie
③JSONP:
优势:
一、轻量级,ajax封装,使用方便,Json 格式通用
缺点:
一、callback 参数注入,存在XSS漏洞
二、资源访问未受限制 (可用refer做受权设置,但效果颇有限)
三、只能 Get 请求dom
④iframe + window.name
优势:post
缺点:
一、传值只能是字符串的形式
二、传值有大小限制,通常最大是2Mspa
⑤iframe + document.domain
优势:
缺点:
一、两个域必须在同一基础域代理
4月24日,与Alex讨论后,从Alex那里学到了两个方法server
⑥模拟表单post提交
优势:
一、表单post提交设置cookie不受同源策略限制
缺点:
一、接收方的接口设置了cookie后,返回的是302,必然会把提交方的页面重定向,并且这个重定向的地址也是由接收方返回的时候一并返回的。意思就是,提交方只能控制post动做,后续的动做都是由接收方来操纵。
⑦ nginx 反向代理(Alex比较倾向的方法,未验证)
方法:
服务端提供接口,读取和设置本域的cookie
客户端访问服务端的接口经过 nginx 的反向代理访问(如 www.clientA.com/server/setcookie.do)。我的理解为,这是客户端至关于访问自身站点的一个虚拟目录,而后 nginx 把这个请求转发到了 服务端。
⑧ CORS
2017-04-25 18:03 建立
先简单记录下