ios – 具有两个UIWebView的独立cookie存储?

背景
我正在开发一个简单的iPad应用程序,允许用户同时浏览不同登录的同一网站.因此,我有两个UIWebView,他们应该有不同的cookie存储,所以用户可以登录一个帐户在第一个UIWebView和第二个UIWebView上的另一个帐户.

我试过什么
我认为解决方案是在两个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存储?

谢谢!

解决方法

您是否尝试在webViewDidStartLoad中获取与特定网络视图相关联的Cookie(并且保持它们):
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
    [self.cookies addObject:cookie];
}

并立即存储这些Cookie(从self.cookies检索值和键):

NSMutableDictionary *cookieDict = [NSMutableDictionary dictionary];
[cookieDict setObject:@"value1" forKey:NSHTTPCookieName];
[cookieDict setObject:@"value2" forKey:NSHTTPCookieValue];
[cookieDict setObject:@"value3" forKey:NSHTTPCookieDomain];
...etc..

NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieDict];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

您还需要在viewDidLoad中看到这一点:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

以上是来客网为你收集整理的ios – 具有两个UIWebView的独立cookie存储?全部内容,希望文章能够帮你解决ios – 具有两个UIWebView的独立cookie存储?所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。