javascript - JSONP 或 window.postMessage & MessageChannel

标签 javascript php jquery ajax single-sign-on

好的,在构建 x 域 sso 逻辑时,我们遇到了一个未知数。

对于 Windows SCSS 子 IE10 使用 JSONP 或 window.postMessageMessageChannel (MessageChannel)

逻辑是(显然相当标准)。 1 个主域,2 个其他域(site2 和 site3)。 登录站点1

  1. 用户将表​​单发布到主域。

  2. 主域,将用户登录到主域并重定向回 site1.com/sso?token=uhytchvgjb

  3. site1/sso 解密 token 并将用户登录到 site1

这个逻辑工作得很好并且有道理。现在输入“上下文登录”。即js灯箱弹出,登录,将页面转换为登录状态。

上述 3 个步骤可以在 iframe 中完成,但随后我需要部署使用 postMessage 来提醒父窗口登录成功。然而,经过研究,postMessage 并不友好(令人震惊)。所以我必须使用 MessageChannel,但对于一个烦人的浏览器来说似乎是额外的工作。

是否可以使用jquery ajax和jsonp?即登录 site1

  1. 用户通过ajax数据发布到主域

  2. 主域验证详细信息并登录当前用户,并在响应中向客户端返回 token 。

  3. 客户端收到响应后将 token 传递回 site.com sso 检查并向客户端返回成功

  4. 客户端然后将页面转换为已登录状态或重定向到相关已登录页面。

以上看来是合理且可行的。问题是,如果使用JSONP方式,客户端是否会登录到主域?

最佳答案

是的。

当 JSONP 请求将发送到辅助网站时,响应可能包含 setcookie header 。 可以通过这种方式为辅助网站设置 session cookie。因此,也可以为其启动 session 。并可设置登录标志。

关于javascript - JSONP 或 window.postMessage & MessageChannel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608797/

相关文章:

javascript - 更改单元格背景的 OnClick 事件

javascript - 如何将 jquery-ui DATEPICKER 插入特定的 div

javascript - 如何使用 jsfiddle 在 javascript 中输出新行?

javascript - Parse.com,下划线模板, View 的模型和当前用户

php - 使用 mysqli 进行简单的错误检查?

javascript - 无法将 php 中的 json 编码值解析为 javascript/jquery 中的 JSON 解析

javascript - 在 jquery.ready 之后加载 javascript 文件

javascript - 在保留空间的同时淡化 DIV

javascript - 函数未在 HTMLButtonElement.onclick 中定义

php - 多语言 PHP 站点中的 CSS 图像替换问题