我正在構建一個使用Google App Engine作爲後端的iOS應用程序。 Google提供了一個存儲身份驗證Cookie的HTML登錄網站。如果我在UIWebView中訪問該網站,並且用戶登錄,那麼這些Cookie是否會存儲在NSURLConnection向同一站點發出請求時將被拾取的位置?UIWebView和NSURLConnection共享cookie存儲嗎?
回答
UIWebView的cookie將存儲在可通過NSHTTPCookieStorage sharedHTTPCookieStorage]
訪問的沙盒cookie存儲中。您可以以這種方式使用NSURLConnection的這個cookie存儲:
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@"__YOUR_URL__"]];
NSDictionary *headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
[request setAllHTTPHeaderFields:headers]; //A previously created NSMutableURLRequest
現在可以正常使用的NSURLRequest一個NSURLConnection的,它會發送在UIWebView中
我是否會將「YOUR_URL」替換爲頁面的URL或域名? – Linuxios 2013-03-13 23:24:19
在你的情況下用'.google.com'替換YOUR_URL應該沒問題,一般來說就是匹配cookie的域字段的url。如果您不知道確切的網址('.google.com'是否與所有google.com子域名匹配),則可以通過以下方式獲取cookie存儲中的所有Cookie:'[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]'。服務器可能會簡單地忽略不適合他的cookies(如果有其他人)。 – 2013-03-14 11:50:37
那麼'.google.com'是用於'google.com'還是所有子域?確切地說, – Linuxios 2013-03-14 13:32:43
感謝登錄後創建的cookie。我一直在試圖找出一種方法來問這個問題約10分鐘。 – 2015-03-24 17:33:12
@Yar:很高興你找到了! – Linuxios 2015-03-24 17:33:55