首页 > 解决方案 > 有人对 Safari 和返回到您的 Rails 应用程序的外部链接有疑问吗?

问题描述

我有一个带有魔法的 Rails 应用程序进行身份验证。我正在尝试集成 Stripe 结帐,但我发现 Safari 存在问题。适用于 Chrome 和 Firefox。

我可以使用取消 url 成功创建一个 Stripe 托管的结帐页面,并且 stripe js 在同一个浏览器选项卡中将我发送到那里。问题是当我单击结帐页面上的取消/返回链接时,它会返回到我的应用程序并将我推到登录页面,因为它找不到会话并且 current_user 为零。

有趣的是,在登录页面上,如果我只是在地址栏中输入取消 url,它会成功验证我的身份,因此它必须找到原始会话/cookie。

有没有人遇到过这个?是缓存问题吗?我在日志和 js 控制台中都没有看到任何错误。就在服务器日志中...

Filter chain halted as :require_login rendered or redirected

这与 Stripe 无关,因为我在另一台服务器和不同域上创建了一个简单的 test.html 页面,并带有指向取消 url 的链接。结果相同。我看到从 https 返回到我的本地主机服务器以及在暂存环境 https -> https 中的相同问题。

我还清除了我的 Safari 缓存、历史记录、cookie,重新启动了浏览器和我的计算机,并清除了 rails 会话表,但无济于事。我正在使用 activerecord 会话存储,但也尝试使用纯 cookie。

任何提示/解决方案将不胜感激。谢谢!

标签: ruby-on-railssafaristripe-payments

解决方案


截至 2021 年 2 月 19 日,这显然是 Safari 的一个已知错误。如果设置为 Lax,Safari 将不会发送 cookie。Rails 6 默认值现在很宽松,没有设置 < 6。


推荐阅读