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

时间:2008-12-12 21:34:29

标签: objective-c macos webkit

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

至少,我不希望他们共享cookie。一个快速的谷歌搜索给了我喜欢“你不能”的结果。我希望有人有更好的答案。

4 个答案:

答案 0 :(得分:17)

基本答案是“你不能”。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

我认为cookie将在服务/应用程序级别配置,而不是针对特定实例或进程。也许你可以修改你的问题,找到解决你所遇到的问题的方法,这要求实例不共享cookie。

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

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

答案 3 :(得分:0)

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