2011-08-18 44 views
3

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

  1. 加载URL时禁用WebView的Cookie。
    • 我试过使用[NSMutableURLRequest setHTTPShouldHandleCookies:NO]但是没有帮助。而且我无法使用NSHTTPCookieStorage更改cookie策略,因为它会影响其他应用程序。
  2. 找回我加载
    • 我不知道这是可能的URL的cookie。我找遍了所有可用的WebView委托方法,但没有发现任何东西
  3. 使用执行URL的一个新的重载[WebFrame reloadFromOrigin]实例方法
    • 这仅适用于Mac OSX> = 10.6
  4. 重新创建的WebView 实例
    • 没有帮助,饼干仍然存在

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

回答

1

是否要与Safari共享cookie?如果没有(并且我假设你没有),那么请看IGIsolatedCookieWebView以获取如何在webkit中创建自己的私人cookie存储的示例。

如果您想与Safari共享Cookie,则需要使用NSHTTPCookieStorage在适当的时间跟踪并删除相关的cookie。

+0

我不必与Safari共享cookie。在查看IGIsolatedCookieWebView代码后,我找到了解决问题的方法。实质上,现在我可以通过实现WebResourceLoadDelegate方法并从获得的响应中提取cookie来检索NSURLRequest的所有cookie。我跟踪这些cookie,然后在重新加载请求之前,我从NSHTTPCookieStorage中删除这些cookie。因此,与IGIsolatedCookieWebView不同,Cookie仍在应用程序之间共享,但我可以跟踪他们的添加并在需要时将其删除。 – mkumaro

+0

@Rob Napier,您好,请您介绍一下如何在iphone和web视图之间共享cookie。 – defactodeity

+0

@defactodeity,你没有。 iOS应用程序是沙盒。 –

相关问题