背景
我正在開發一個簡單的iPad應用程序,允許用戶在同一時間用不同的登錄名瀏覽同一個網站。因此,我有兩個UIWebView
,他們應該有不同的cookie存儲,以便用戶可以登錄第一個UIWebView
上的一個帳戶和第二個UIWebView
上的另一個帳戶。爲兩個UIWebView分開存儲cookie嗎?
我試過了什麼?
我認爲解決方案是在我擁有的兩個UIWebView
中實現不同的cookie存儲。
Sasmito Adibowo寫了一篇文章Implementing Your Own Cookie Storage,其中提供了有關如何在Mac上爲WebView
使用自定義Cookie存儲的詳細信息。
這是通過修改WebView
要發送的NSURLRequest完成的,向它添加cookie標頭,並攔截來自WebView
的響應,並從響應頭中提取cookie並將其保存到我們自己的cookie存儲中。
- (void)webView:(WebView *)sender resource:(id)identifier didReceiveResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)dataSource
- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
雖然無證,UIWebView
沒有支持上面略有不同的方法名的方法之一:
從技術上講,它是通過實現這兩個委託方法做
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
然而, UIWebView
沒有與webView:resource:didReceiveResponse:fromDataSource:
等效的代理方法,因此我無法從響應頭中提取cookie。
問題
有沒有辦法有UIWebView
使用自定義的cookie存儲,所以這兩個UIWebView
可以有自己的cookie存儲?
謝謝!
in'webViewDidStartLoad',請求已經發送,因此你的黑客無法正常工作。將它移動到'shouldStartLoadWithRequest'可能會起作用。但是,你的破解不會允許兩個UIWebView同時加載請求。 – howanghk
@bdev答案我想在迅速3.0可以幫助我。 –