iframe嵌入页面cookie和seesion的问题?
一个单点登陆的需求
A网站使用iframe嵌套B网站(跨域),B网站使用Oauth2.0单点登录,因为是iframe导致B网站cookie和session无法正常使用,造成提示登录失败等问题,求解如何正确处理呢?
所有登录逻辑都是B网站的,A只是用iframe嵌套了B网站,目的就是让浏览器URL一直保持是A网站。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先需要 B 网站是你可控的,如果不是你可控的、又不支持
P3P
(the Platform for Privacy Preferences),那么只有后端加反向代理、让你 A/B 网站同域这一条路可解。不要相信百度上的什么 Set-Domain 之类的 JS 方法,很多浏览器都不支持。
一般来说,OAuth 的页面就是给人用 iframe 嵌入的(以防止样式冲突、JS 劫持之类的问题),它们都会带一个响应标头
P3P
。比较典型的是 QQ 的第三方登录,注意看响应头:你需要在 B 页面的 WebServer 中配置,使其也返回同样的响应标头,以达到让 iframe 跨域也能读写 Cookie 的目的。
有关
P3P
的更多介绍,可以参考 W3C 文档:https://www.w3.org/P3P/如果A只是个壳子的话,我觉得更好的办法是设置域名解析,然乎直接解析到B网站对应的服务器上。或者nginx直接代理
如果只是为了这个,可以考虑frameset啊,不是只有iframe可以用。
看看这个http://www.sinomapping.top