0

我正在开发一个需要从我们基于 iis 的网站下载网页的应用程序。如果我在 iPad 上登录域进行无线连接,我正在连接的站点似乎使用该登录作为我的凭据。但是,如果我没有连接到域,或者我以无权访问该页面的用户身份连接,它会触发didReceiveAuthenticationChallenge,否则不会。如果我使用 Safari 连接到同一页面,它无论如何都会要求进行身份验证。我希望每次都能让应用程序进行身份验证。任何帮助,将不胜感激。

请求页面的代码:

NSError *error = nil;
// assign the cmh url from user prefs
NSURL *url = [NSURL URLWithString:cmhUrl];

// Put that URL into an NSURLRequest
NSURLRequest *req = [NSURLRequest requestWithURL:url];

[req setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

// Create a connection that will exchange this request for data from the URL
connection = [[NSURLConnection alloc] initWithRequest:req
                                             delegate:self
                                     startImmediately:YES];
4

1 回答 1

0

看起来当您在 Safari 中进行身份验证时,身份验证令牌保存在 NSHTTPCookieStorage 中。当您从代码发出请求时,存储中的所有 cookie 都会添加到标头中,因此无需再次请求令牌。
在发出请求之前尝试清除存储:

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in cookieStorage.cookies) {
    [cookieStorage deleteCookie:cookie];
}

希望这可以帮助。

于 2012-10-31T11:39:19.923 回答