2011-08-18 43 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應用程序是沙盒。 –

相關問題