我正在使用 NSURLConnection
连接到服务器。服务器要求我使用委托(delegate)方法进行基本身份验证:- didReceiveAuthenticationChallenge
。但这只会被调用一次。如果我将密码更改为一些不同的值,那么这个 delegate
方法不会被调用并且它认为我的登录成功?
任何形式的帮助将不胜感激。
谢谢。
最佳答案
解决了!
结果证明 NSURLConnection
实际上行为正确——也就是说,didReceiveAuthenticationChallenge:
被调用以应对每个身份验证挑战。
问题是服务器在第一个之后没有发送挑战。原来这是因为服务器正在设置 cookie。
您可以通过简单地删除 cookie 来强制进行新的挑战。因为这个服务器没有其他有用的cookies,我只是把它们都删除了:
- (void)clearCookiesForURL {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookiesForURL:_URL];
for (NSHTTPCookie *cookie in cookies) {
NSLog(@"Deleting cookie for domain: %@", [cookie domain]);
[cookieStorage deleteCookie:cookie];
}
}
关于iphone - didReceiveAuthenticationChallenge 只被调用一次 iPhone,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6372350/