好的,在构建 x 域 sso 逻辑时,我们遇到了一个未知数。
对于 Windows SCSS 子 IE10 使用 JSONP 或 window.postMessage
和 MessageChannel (MessageChannel)
。
逻辑是(显然相当标准)。 1 个主域,2 个其他域(site2 和 site3)。 登录站点1
用户将表单发布到主域。
主域,将用户登录到主域并重定向回 site1.com/sso?token=uhytchvgjb
site1/sso 解密 token 并将用户登录到 site1
这个逻辑工作得很好并且有道理。现在输入“上下文登录”。即js灯箱弹出,登录,将页面转换为登录状态。
上述 3 个步骤可以在 iframe 中完成,但随后我需要部署使用 postMessage
来提醒父窗口登录成功。然而,经过研究,postMessage 并不友好(令人震惊)。所以我必须使用 MessageChannel,但对于一个烦人的浏览器来说似乎是额外的工作。
是否可以使用jquery ajax和jsonp?即登录 site1
用户通过ajax数据发布到主域
主域验证详细信息并登录当前用户,并在响应中向客户端返回 token 。
客户端收到响应后将 token 传递回 site.com sso 检查并向客户端返回成功
客户端然后将页面转换为已登录状态或重定向到相关已登录页面。
以上看来是合理且可行的。问题是,如果使用JSONP方式,客户端是否会登录到主域?
最佳答案
是的。
当 JSONP 请求将发送到辅助网站时,响应可能包含 setcookie header 。 可以通过这种方式为辅助网站设置 session cookie。因此,也可以为其启动 session 。并可设置登录标志。
关于javascript - JSONP 或 window.postMessage & MessageChannel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608797/