ruby-on-rails - 有人对 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。
任何提示/解决方案将不胜感激。谢谢!
解决方案
截至 2021 年 2 月 19 日,这显然是 Safari 的一个已知错误。如果设置为 Lax,Safari 将不会发送 cookie。Rails 6 默认值现在很宽松,没有设置 < 6。
推荐阅读
- java - com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.harry.foodapp.Model.AdminOrders 类型
- python - 一行代码python中的if-else语句;语法错误
- html - 视频不显示在移动设备上
- java - 从 AWS s3 存储桶上传文件
- c# - 集成测试——微服务相互调用
- ios - 无法使用后台配置创建 URLSessionWebSocketTask
- javascript - 如何避免在每次渲染时执行 useState 函数参数(获取初始值)?
- c# - 在 C# 中是否可以检查给定的日期格式字符串是否仅包含日期格式或时间格式?
- nginx - Nginx域解析502网关
- user-interface - 无法为 Pact 代理启动 UI