在 Safari 的私密浏览模式下,db.info() 会卡死
看起来 Safari 的最近更新可能破坏了 PouchDB 在私密浏览模式下的运行。根据我的测试,可能是 18.4 版本,因为我在 iOS 18.3 模拟器中没有遇到任何问题,但我的桌面和移动浏览器(分别为 18.4 和 18.5)都在私密浏览模式下无法运行。具体来说,它似乎在任何异步调用中都会静默地卡死,包括 info()。不会记录任何错误,而且它能够正常创建数据库,但如果您尝试对其进行任何操作,它就会卡死。以下是一个在 CodePen 中的示例应用程序,该应用程序初始化了数据库并尝试进行一些更改,并记录发生的事情: https://codepen.io/teleganov/pen/OPVNOYV 在非私密浏览模式下,日志显示: 10:29:46 PM: 页面加载完毕,点击"测试 PouchDB"以运行测试 10:29:46 PM: PouchDB 版本: 9.0.0 10:29:46 PM: ✓ PouchDB 已加载 10:29:46 PM: ✓ PouchDB 数据库 'test-db' 已创建 10:29:46 PM: ✓ 数据库信息已检索 10:29:46 PM: - 适配器: idb 10:29:46 PM: - 文档数量: 8 10:29:46 PM: - 更新序列: 10 10:29:46 PM: ✓ 以 ID: test-doc-1748831386435 创建文档 10:29:46 PM: - 版本: 1-adbb411962c9cd5e63b8958336356134 10:29:46 PM: ✓ 检索文档: Hello PouchDB! 10:29:46 PM: ✓ 更新文档,新版本: 2-8a904b9e0e168da39fa90b9b12640d9f 10:29:46 PM: ✓ 查询所有文档: 共 9 个 10:29:46 PM: ✓ 批量插入: 创建 3 个文档 10:29:46 PM: ✓ 最终文档数量: 12 10:29:46 PM: ✓ 最终更新序列: 15 10:29:46 PM: ✓ 数据库关闭 10:29:46 PM: ✓ 数据库重新打开 - 文档数量: 12 10:29:46 PM: ✓ 数据已保存: Hello PouchDB! 10:29:46 PM: ✓ 数据库再次关闭 10:29:46 PM: PouchDB 测试已成功完成! 在私密浏览模式下,第一次 info() 调用永远不会解析。我确实在 18.4 安全性发布说明中找到了 此 CVE,其中包含以下注释: 影响:恶意网站可能在 Safari 私密浏览模式下跟踪用户 描述:此问题已通过改进状态管理来解决。 起初,我希望将责任归咎于 Safari,但随后我测试了使用完全基于 IndexedDB 的此 CodePen: https://codepen.io/teleganov/pen/qEdZpEL 这个应用程序在私密和非私密浏览模式下都运行正常。因此,PouchDB 专门的某些部分与 Safari 18.4+ 私密浏览模式不兼容。
内容来源: apache/pouchdb