这就是用例。
应用程序运行,授权 header 设置为零。您获得了新数据。
[_request setValue:nil forHTTPHeaderField:@"Authorization"];
用户登录后,所有对服务器的请求都像这样发送授权 header 。
[_request setValue:[NSString stringWithFormat:@"TRUEREST 用户名=%@&session_token=%@&apikey=1234567890",@"用户名",@"session_token"] forHTTPHeaderField:@"Authorization"];
现在我注销了,现在每个请求都带有授权 header nil 值。
[_request setValue:nil forHTTPHeaderField:@"Authorization"];
但我仍然收到回复,就好像我已登录用户一样?知道问题出在哪里吗?
使用如下方式向服务器发出请求
[NSURLConnection sendAsynchronousRequest:_request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {}];
我尝试通过以下两种方式创建 NSMutableURLRequest。
_request = [NSMutableURLRequest requestWithURL:url];
_request = [[NSMutableURLRequest alloc] initWithURL:url
cachePolicy:NSURLRequestReloadRevalidatingCacheData
timeoutInterval:60];
最佳答案
您可以在使用请求之前禁用 cookie:
[_request setHTTPShouldHandleCookies:NO];
或者,删除任何 cookie - 或相关的 cookie - 形成 NSHTTPCookieStorage
单例。
但是,您可以使用 NSURLConnection
实现委托(delegate) connection:willSendRequestForAuthenticationChallenge:
来大大改进您的代码,您可以在其中完全自定义身份验证处理。
关于ios - 即使在重置授权 header 后,NSURLConnection 也会返回缓存的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717314/