iphone - iOS UIwebView 身份验证 Cookie

标签 iphone ios ipad webview objective-c++

我有一个 UIWebView,它加载了一个用户身份验证的网站。该站点创建一个身份验证 cookie。在浏览器中时,除非您清除 cookie,否则您将始终处于登录状态。当 xCODE 加载时,它可以在查看 cookie jar 时看到列出的 cookie,但它不会发送到 webView。 我想知道如何让 webView 知道 auth cookie 在那里,这样它就不会继续提示用户每次都进行身份验证。

最佳答案

您可以使用 NSURLConnection 类执行 HTTP 请求以登录网站并检索 cookie。要执行请求,只需创建一个 NSURLConnection 实例并为其分配一个委托(delegate)对象。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];

然后,实现一个委托(delegate)方法。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
    NSDictionary *fields = [HTTPResponse allHeaderFields];
    NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie
}

保留或复制 cookie 字符串。当你想执行另一个请求时,将它添加到你的 NSURLRequest 实例的 HTTP header 中。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:"Cookie"];

要随时调用此方法删除 Cookie:

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }

关于iphone - iOS UIwebView 身份验证 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929579/

相关文章:

iphone - cocos2D 从 iPhone 到 iPad

ios - 用于生成报告的 iPad 应用程序

ios - 在 iPad 上模拟 sleep 模式

ios - 在应用程序关闭时从 cancelByProducingResumeData 保存数据 [iOS7]

ios - 删除 UITableViewCell 引发异常

UIButton 上的 iOS NSAttributedString

cocoa-touch - 为什么通过 AV Foundation 播放音频会在慢速连接时阻塞 UI?

iphone - UI_USER_INTERFACE_IDIOM 是否适用于目标设备系列

iphone - XCode 在 "Run Script"阶段未完成测试构建

iphone - cocos2d 中的光流