Objective c 在WebView中禁用或删除cookie而不影响其他应用程序

Objective c 在WebView中禁用或删除cookie而不影响其他应用程序,objective-c,cookies,Objective C,Cookies,我正在解决Mac OSX 10.5应用程序中的一个问题,该问题要求在用户注销时从应用程序中删除cookie,以便其他用户可以登录而无需退出应用程序。当用户第一次进行身份验证时,WebView使用单例cookie存储类NSHTTPCookieStorage接收并缓存5个cookie。当我尝试使用[NSHTTPCookieStorage cookiesForURL:]方法检索cookies时,我只得到4个。这意味着第五个URL与其他URL关联。我无法使用域来识别Cookie,因为我可能会删除其他应用

我正在解决Mac OSX 10.5应用程序中的一个问题,该问题要求在用户注销时从应用程序中删除cookie,以便其他用户可以登录而无需退出应用程序。当用户第一次进行身份验证时,WebView使用单例cookie存储类NSHTTPCookieStorage接收并缓存5个cookie。当我尝试使用[NSHTTPCookieStorage cookiesForURL:]方法检索cookies时,我只得到4个。这意味着第五个URL与其他URL关联。我无法使用域来识别Cookie,因为我可能会删除其他应用程序正在使用的Cookie。我的想法如下:

  • 加载URL时禁用WebView的Cookie。
    • 我尝试过使用[NSMutableURLRequest setHTTPShouldHandleCookies:否],但没有帮助。而且我无法使用NSHTTPookieStorage更改cookie策略,因为它会影响其他应用程序
  • 检索我正在加载的URL的Cookie
    • 我不知道这是否可能。我搜索了所有可用于WebView的委托方法,但没有找到任何内容
  • 使用[WebFrame reloadFromOrigin]实例方法重新加载URL
    • 这仅适用于Mac OSX>=10.6
  • 重新创建WebView的实例
    • 没有帮助,饼干仍然存在

  • 我也尝试过WebPreferences类提供的不同选项,但没有帮助。提前感谢您提供解决此问题的任何提示

    您想与Safari共享cookies吗?如果没有(我假设您没有),那么请看一个如何在webkit中创建您自己的私有cookie存储的示例


    如果您想与Safari共享cookie,您需要跟踪相关cookie,然后在适当的时间使用
    NSHTTPCookieStorage

    删除相关cookie。我不必与Safari共享cookie。在研究了IGIsolatedCookieWebView代码之后,我找到了问题的解决方案。基本上,现在我可以通过实现WebResourceLoadDelegate方法并从您得到的响应中提取cookie来检索NSURLRequest的所有cookie。我跟踪这些Cookie,然后在重新加载请求之前,我从NSHTTPCookie存储中删除这些Cookie。因此,与IGIsolatedCookieWebView不同,Cookie仍在应用程序之间共享,但我可以跟踪它们的添加,并在需要时删除它们。@Rob Napier,你好,请您解释一下如何在iphone上的webview和safari之间共享Cookie好吗?@FactoDedity,您没有。iOS应用程序是沙盒。