在OSX中,每个WebView都有单独的cookie罐



我一直在努力实现在macOS中每个WebView都有一个唯一的(非共享的)cookie jar的目标(iOS的cookie管理工作方式不同)。

在阅读了大量StackOverflow问题并深入阅读文档后,我在这些文章中找到了最接近我问题的解决方案:

  • (如何处理HTTP cookie)
  • (如何处理JavaScript文档.cookie cookie)

我使用它们设置了一个示例应用程序:https://github.com/jjconti/swift-webview-isolated

其基本思想是从WebResourceLoadDelegate和WebPolicyDelegate协议中实现必要的方法,并使用BSHTTPCookies存储来存储和检索cookie。此外,我的示例应用程序允许保存cookieStorage对象,以便在将来执行时重新加载。

不幸的是,该应用程序并不是在每个网站上都能正常工作(文章的作者针对的是一个特定的网站)。例如Gmail和NewRelic,您在登录后(或执行某些操作后)会立即注销。这让我怀疑cookie存储实现中存在一个我还没能找到的错误。

有人能告诉我是不是有什么东西不见了?

问题是没有JS级别的cookie隔离。document.cookie仍然指向共享的cookie罐。若要实现真正的cookie隔离Web视图,必须覆盖文档的cookie属性。

您可以尝试我的实现:http://cyyuen.github.io/ADCookieIsolatedWebView

它适用于使用document.cookie获取Dropbox.com等cookie的网站。但是,setter没有实现。

最新更新