2012-03-20 65 views
5

我有一個iOS應用程序,用於在webview中加載html內容。 html是登錄頁面,其中用戶憑證通過ajax發送到服務器,並且接收到認證成功/失敗響應。現在,響應包含一個cookie(在Set-Cookie報頭字段),我可以在目標C側像這樣捕獲,無法在UIWebview瀏覽器中使用document.cookie讀取cookie

NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields]; 
NSString *strCookies = [headers valueForKey:@"Set-Cookie"]; 
NSLog(@"cookies -> %@", strCookies); 

相同的響應還包含一個responseText我在瀏覽器內使用:

Ajax("/login", "POST", { onsuccess : function(response){ 
     /* Do HTML stuff with response */ } 
}); 

現在我需要cookie來做進一步的ajax請求(在登錄頁面之後)。但是,cookie不會在webview瀏覽器中設置。尋找document.cookie返回一個空字符串。我可以使用xhr.getAllResponseHeaders()打印所有響應標題,但我無法訪問xhr對象中的Set-Cookie字段。

如何在cookie中設置cookie?或者我別無選擇,只能通過Obj-C完成所有ajax請求?

回答

2

您可以在發送給webview的請求中設置cookie。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL]; 
[request setValue:yourCookie forHTTPHeaderField:@"Cookie"]; 

這可能在UIWebView的委託shouldStartLoadWithRequest

+0

@fenderplayer這篇回答你的問題做什麼? – 2013-03-25 19:23:12