iframe嵌入页面cookie和seesion的问题?

一个单点登陆的需求

A网站使用iframe嵌套B网站(跨域),B网站使用Oauth2.0单点登录,因为是iframe导致B网站cookie和session无法正常使用,造成提示登录失败等问题,求解如何正确处理呢?

所有登录逻辑都是B网站的,A只是用iframe嵌套了B网站,目的就是让浏览器URL一直保持是A网站。。

阅读 922
评论
    3 个回答

    首先需要 B 网站是你可控的,如果不是你可控的、又不支持 P3P(the Platform for Privacy Preferences),那么只有后端加反向代理、让你 A/B 网站同域这一条路可解。

    不要相信百度上的什么 Set-Domain 之类的 JS 方法,很多浏览器都不支持。

    一般来说,OAuth 的页面就是给人用 iframe 嵌入的(以防止样式冲突、JS 劫持之类的问题),它们都会带一个响应标头 P3P。比较典型的是 QQ 的第三方登录,注意看响应头:

    clipboard.png

    你需要在 B 页面的 WebServer 中配置,使其也返回同样的响应标头,以达到让 iframe 跨域也能读写 Cookie 的目的。

    有关 P3P 的更多介绍,可以参考 W3C 文档:https://www.w3.org/P3P/

      • 2.7k

      如果A只是个壳子的话,我觉得更好的办法是设置域名解析,然乎直接解析到B网站对应的服务器上。或者nginx直接代理

          撰写回答

          登录后参与交流、获取后续更新提醒