我有一个 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/