代码之家  ›  专栏  ›  技术社区  ›  Dustin

如何在不共享Cookie的情况下拥有多个webkit实例?

  •  20
  • Dustin  · 技术社区  · 17 年前

    我有一个应用程序可以创建几个WebView实例,我希望它们尽可能独立运行。

    至少,我不想让他们分享饼干。在谷歌上快速搜索后,我得到了“你不能”这样的结果。我希望有人能给出更好的答案。

    4 回复  |  直到 17 年前
        1
  •  17
  •   Lily Ballard    17 年前

    基本的答案是“你不能”。

    在看了一点之后,我认为这是可能的,但非常复杂。这将涉及在WebView上实现一个resourceLoadDelegate,实现 -webView:resource:willSendRequest:redirectResponse:fromDataSource: 并修改请求以关闭 HTTPShouldHandleCookies 并手动将任何相关Cookie添加到请求中。它还必须实施 -webView:resource:didReceiveResponse:fromDataSource: 以了解服务器返回的任何Cookie。您可以分配/初始化您自己的副本 NSHTTPCookieStorage 每个网络视图,并使用它来存储/检索Cookie。

        2
  •  3
  •   Kristof Van Landschoot    17 年前

    This post 总结一下你能做什么。我不确定这对你来说是否可行,我觉得这不是一项简单的任务,甚至可能有风险,但似乎是 可能的 :作者声称iCab是这样做的。

    我也希望有一个更简单的解决方案,真的。当然,既然Webkit是开源的,你可以推出自己版本的框架,改变行为,我想?

        3
  •  0
  •   Will Bickford    17 年前

    我假设Cookie将在服务/应用程序级别配置,而不是针对特定实例或流程。也许您可以修改您的问题,找到一种方法来解决您遇到的问题,该问题要求实例不共享Cookie。

    实例之间不共享Cookie的动机是什么?

    如果您只需要同一web资源的3个视图,则可以设置一些指向同一数据源的虚拟主机。

        4
  •  0
  •   Kristof Van Landschoot    17 年前

    你能做的就是看看 libcurl 它可以处理不与URL混合的cookie存储。为您想要分离的请求加载系统范围的cookie存储空间。对我来说,这似乎是一个有效而简单的解决方案。如果你真的需要依赖webview/webkit,它可能不是。