在 iOS 上,有没有办法检测在嵌入式浏览器中运行的网页并打开 "real" 网页?

On iOS, is there a way to detect a web page runs in the embedded browser and open the "real" one?

我的网站使用魔术 links 登录,但是,我在移动设备上遇到问题(不确定 Android - 还没有尝试过,但问题至少存在于iOS):当用户在 GMail 应用程序中收到电子邮件时,link 在嵌入式浏览器中打开,这意味着 cookie 不会传递到“真实”浏览器。

有没有办法确保电子邮件中的 link 在真实系统浏览器中打开,从而永久存储 cookie?

(本质上,iOS 上的浏览​​器会话隔离破坏了 Internet 上的很多东西,所以肯定有解决方法吗?)

经过一番研究:不,无法检测到您使用的是嵌入式浏览器,也无法在系统中强制打开 link。从安全的角度来看是有道理的。

但是,我问错了问题。魔术 link 登录的问题以不同的方式解决:启动登录过程时,您可以设置会话 cookie 并为其创建关联的 DB 记录,将其标记为已阻止,即未登录。

下一步,当在任何浏览器中打开魔法 link 时,您将取消阻止数据库中的会话。在此阶段,您可以用真实的 cookie 替换登录 cookie,例如JWT,或继续将其用作您的主要身份验证令牌。

如果用户随后 returns 访问真实浏览器,您将检查登录 cookie 并采取相应措施,请记住,这可能不是他们验证魔法 link 的浏览器。在此阶段,您可以再次将登录 cookie 替换为您知道会话已经过验证的真实身份验证 cookie。

我不完全确定这是 100% 安全的,需要多考虑一下,但乍一看它确实安全并且似乎是处理 links 上的魔法的唯一方法手机。