gpt4 book ai didi

ios - 两个 UIWebView 有单独的 cookie 存储?

转载 作者:技术小花猫 更新时间:2023-10-29 10:40:08 25 4
gpt4 key购买 nike

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

我尝试了什么?
我认为解决方案是在我拥有的两个 UIWebView 中实现不同的 cookie 存储。

Sasmito Adibowo 写了一篇文章 Implementing Your Own Cookie Storage其中提供了有关如何在 Mac 上为 WebView 使用自定义 cookie 存储的详细信息。
它是通过修改 WebView 将要发送的 NSURLRequest,向其添加 cookie header ,并拦截来自 WebView 的响应并从响应 header 中提取 cookie 来完成的将其保存到我们自己的 cookie 存储中。
从技术上讲,它是通过实现这两个委托(delegate)方法来完成的:

- (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: 的等效委托(delegate)方法,因此我无法从响应 header 中提取 cookie。

问题
有没有办法让 UIWebView 使用自定义的 cookie 存储,这样两个 UIWebView 就可以有自己的 cookie 存储?

谢谢!

最佳答案

您是否尝试过在 webViewDidStartLoad 中获取与特定 webview 关联的 cookie(并保留它们):

NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
[self.cookies addObject:cookie];
}

然后立即存储这些 cookie(从 self.cookie 中检索值和键):

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 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com