ios - 即使在重置授权 header 后,NSURLConnection 也会返回缓存的响应

标签 ios objective-c nsurlconnection httprequest httpresponse

这就是用例。

  1. 应用程序运行,授权 header 设置为零。您获得了新数据。

    [_request setValue:nil forHTTPHeaderField:@"Authorization"];

  2. 用户登录后,所有对服务器的请求都像这样发送授权 header 。

    [_request setValue:[NSString stringWithFormat:@"TRUEREST 用户名=%@&session_token=%@&apikey=1234567890",@"用户名",@"session_token"] forHTTPHeaderField:@"Authorization"];

  3. 现在我注销了,现在每个请求都带有授权 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/

相关文章:

ios - 如何获取我的Gmail帐户的个人资料图片?

iphone - 回调的代表数组不安全?

c++ - 在 obj-c/C++ 中使用 UDP 的例子?

ios - 如何让SFSafariViewController在新窗口打开链接(IOS开发)

ios - 自动布局将 View 设置为屏幕大小

objective-c - NSTableView:以编程方式添加一行会导致选择具有相同值的许多行?

iphone - 下载前计算文件大小

objective-c - NSOperation 中的 NSURLConnection

ios - 以编程方式快速创建动态高度 UIImageViews

ios - 在 Swift 3 中录制音频并将其发送到服务器