NSURLConnection即使在重置授权标头后也返回缓存响应

时间:2013-07-18 07:32:48

标签: ios objective-c nsurlconnection httprequest httpresponse

所以这就是用例。

  1. 应用程序运行,授权标头设置为nil。你得到了新的数据。

    [_ request setValue:nil forHTTPHeaderField:@“Authorization”];

  2. 用户登录,之后所有对服务器的请求都会像授权标题一样发送。

    [_ request setValue:[NSString stringWithFormat:@“TRUEREST username =%@& session_token =%@& apikey = 1234567890”,@“username”,@“session_token”]        forHTTPHeaderField:@ “授权”];

  3. 现在我退出,现在每个请求都带有Authorization Header nil值。

    [_ request setValue:nil forHTTPHeaderField:@“Authorization”];

  4. 但我仍然得到回复,好像我已登录用户?知道这是什么问题吗?

    使用以下方式向服务器发出请求

    [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];
    

2 个答案:

答案 0 :(得分:3)

您可以在使用请求之前禁用Cookie:

[_request setHTTPShouldHandleCookies:NO];

或者,从NSHTTPCookieStorage单身人士中删除任何cookie或相关的cookie。

但是,您可以使用NSURLConnection实现代理connection:willSendRequestForAuthenticationChallenge:来极大地改进代码,您可以在其中完全自定义身份验证处理。

答案 1 :(得分:1)

看起来像服务器问题。服务器应发送响应头,告知URL加载系统不缓存响应。