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

发布于 2022-09-11 23:19:55 字数 181 浏览 41 评论 0

一个单点登陆的需求

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美羊羊 2022-09-18 23:19:55

首先需要 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/

瞳孔里扚悲伤 2022-09-18 23:19:55

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

会发光的星星闪亮亮i 2022-09-18 23:19:55

如果只是为了这个,可以考虑frameset啊,不是只有iframe可以用。
看看这个http://www.sinomapping.top

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文