本篇内容介绍了“iframe内嵌第三方带登录页的跨域登录失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
最近项目需要,即在 网站A 比如 http://a.com 中 使用iframe 内嵌访问 网站B 比如 http://b.com
可是在测试的时候,发现使用 谷歌浏览器或者谷歌浏览器内核的浏览器 内嵌访问 网站B的登录页面的时候 http://b.com/login 会导致登录失败!登录不成功。
而如果使用其他浏览器比如 火狐是可以的。
参考解决方案:
问题原因:chrome80及以上版本调整了cookie的策略不能保持,所以出现了跨域问题
解决方案:
1、使用其他浏览器,或者使用低于谷歌80版本的谷歌浏览器
2、客户端解决:如果用户要使用高于80版本谷歌浏览器,需要在自己电脑上的谷歌浏览器进行一个设置也可解决,见方法一
3、服务端解决,集成系统及BI系统均需要修改为https协议(注意:单点登录回调接口的协议不能改为https,否则涉及到证书相关验证,由于BI中并没有证书,会造成请求接口失败),见方法二将BI修改为https协议,集成系统修改为https需要自行解决
方法一:
1、打开你的谷歌浏览器,地址栏输入:chrome://flags
2、搜索:SameSite by default cookies
3、选择:disabled
4、重启浏览器
那肯定不能让 用户 配置浏览器了,也不能让用户指定用火狐浏览器。
于是就 把 A 和 B网站都加上证书 采用 https 的方式。
其实也就是 浏览器为了安全性,禁用了 iframe 登录 session 写入 cookie的功能。
都采用证书 iframe内嵌登录还是失效
结果发现还是登录实现了 。 具体可以使用 菜鸟教程来验证
结果发现 登录慕课网 虽然发邮件告诉我登录成功了,其实是在页面上还是没有登录成功的。
iframe 内嵌跨域登录必须是 证书 + 同域名
也就是 很多百度资料都是说得不清楚,或者过时了的。
经过验证也就是 iframe 内嵌登录必须是 A网站和B网站都 加上 https 证书,且 域名是一样才可以的。
比如: 即在 网站A 比如 https://a.com/a 中 使用iframe 内嵌访问 网站B 比如 https://b.com/b 会导致 网站B登录失效
如果把 网站B域名改成 https://a.com/b 即在 网站A 比如 https://a.com/a 中 使用iframe 内嵌访问 网站B 比如 https://a.com/b 是可以的
“iframe内嵌第三方带登录页的跨域登录失效问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注天达云网站,小编将为大家输出更多高质量的实用文章!