20

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

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

4

4 回答 4

18

基本答案是“你不能”。

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

于 2008-12-13T10:26:26.683 回答
3

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

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

于 2008-12-13T11:49:56.623 回答
0

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

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

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

于 2008-12-12T22:02:19.290 回答
0

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

于 2008-12-22T16:48:28.757 回答