2010-03-26 27 views
12

也許我錯過了一些東西,但是Apple's documentation對於NSHTTPCookieStorage,我不禁想知道這是如何安全使用的。瞭解適用於iPhone的NSHTTPCookieStorage

這是否意味着cookie存儲在iPhone上的所有應用程序之間共享?如果我的應用程序發出Http調用,導致一些Cookie被保存,那麼現在所有的應用程序都可以訪問這些Cookie嗎?

的方法,如:

cookiesForURL:返回將被髮送 到指定的URL所有 接收器的Cookie。

使其看起來更可疑。

有人可以解釋這是怎麼回事,以及班級做了什麼?

此外,假設我的理解存在缺陷,並且確實按每個應用程序進行了沙盒處理,那麼使用NSURLRequest進行的調用會自動從此存儲中保存/檢索Cookie,還是開發者有責任在分派請求之前設置請求標頭?

+0

僅供參考: 我測試了這個,它看起來像是沙盒到您的應用程序。因此,如果您從應用程序中訪問UIWebView中的某個網站,則可以使用瀏覽器設置的Cookie。但不是其他應用程序的那些。我會爲Apple記錄一個文檔錯誤 – psychotik 2010-03-26 02:29:16

+0

Apple似乎已經更新了文檔,現在聲明在iOS上Cookie不在應用程序之間共享。 – 2010-10-13 15:31:31

回答

20

您的應用程序只能在自己的沙箱中訪問cookie。

+0

謝謝。你能引用一個源文件嗎?或者你知道這是基於經驗?這完全不是我如何解釋我鏈接到上面的文檔,所以我想了解更多。 – psychotik 2010-03-26 00:43:41

+0

據我所知,我只能訪問由我自己的應用程序創建的非過期cookie。例如,我無法訪問由Mobile Safari創建的任何Cookie。但是,我沒有太過嚴格地測試它,看起來你引用的文檔與我的經驗相矛盾。我會自己測試一下:使用帶有發佈cookie的網頁的Safari,然後在你自己的應用程序中,遍歷單身cookie中的cookie並查看你發現的內容。如果您沒有看到Safari cookie,那麼會與文檔相矛盾 - 在這一點上值得向http://bugreport.apple.com報告。 – 2010-03-26 00:55:47

+1

是的,我測試了這一點,它似乎是沙盒到您的應用程序。因此,如果您從應用程序中訪問UIWebView中的某個網站,則可以使用瀏覽器設置的Cookie。但不是其他應用程序的那些。我會爲Apple記錄一個文檔錯誤。 – psychotik 2010-03-26 02:28:49

3

我想你很困惑,你可以從其他域/ URL訪問cookie。 這在技術上是真實的,因爲當您使用UIWebView時,您的本機應用程序是「瀏覽器」。 如果您在UIWebView中加載www.siteA.com和www.siteB.com,則兩個域的cookie都可用於您的objc代碼。 所有的應用程序,包括移動Safari瀏覽器都有它自己的CookieJar,他們都不能訪問另一個。

+1

我不明白爲什麼我的回答有負面反饋:) cookiesForURL正是爲特定網址獲取Cookie。該網址可以是您提及的任何網址。扭曲的是,它只返回餅乾罐裏的餅乾。如果您讓用戶在您的應用中瀏覽至facebook.com,則可以訪問facebook.com Cookie。 – 2010-11-30 06:22:37