我的iPhone應用程序中有NSHTTPCookieStorage的一些奇怪的問題。當我在我的Web服務上調用登錄操作時,服務會發回一個名爲「auth」的授權cookie以及其他一些cookie。爲什麼NSHTTPCookieStorage不能正確保存cookie?
當我將用戶登錄出去時,我會在服務器上調用註銷操作來刪除cookie。如果我在調用註銷之前打印[NSHTTPCookieStorage cookies]的結果,我會按預期看到auth cookie。在我註銷後,我發現auth cookie不再存在(如預期的那樣)。
但是,如果我關閉了應用程序並重新啓動它,auth cookie又回來了!
我不確定這裏發生了什麼事。如果NSHTTPCookieStorage沒有保留任何cookie,這將是一回事,但它似乎是挽救了其中的一些。
有誰知道發生了什麼事?我需要手動管理Cookie嗎?有什麼辦法將NSHTTPCookieStorage中的內容提交到磁盤?
我也看到相關的行爲,如果我從Web請求收到一個cookie,確認它存在,然後在幾秒鐘後關閉應用程序(並將其從背景托盤中移除),則Cookie不在當我啓動應用程序。然而,這並不一致。 – 2010-12-15 01:47:41
abraginsky:不幸的是,這正是我所看到的。我通過將相關cookie保存在NSUserDefaults中並在應用程序啓動時從用戶默認值填入NSHTTPURLCookieStorage來解決此問題。它完成了這項工作,但是找出NSHTTPCookieStorage有什麼問題是很好的。 – Bill 2010-12-15 02:07:07
是的,我看到了相同的解決方法,目前正在努力實施它。在用戶從後臺托盤中終止應用程序之前,需要確保NSUserDefault正在用cookie快速更新。把它放在「將終止」將不起作用,因爲這沒有被調用(至少在模擬器中)。 – 2010-12-15 02:33:31