0

这就是用例。

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

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

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

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

  3. 现在我注销,现在每个请求都带有 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];
4

2 回答 2

3

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

[_request setHTTPShouldHandleCookies:NO];

或者,从单例中删除任何 cookie - 或相关 cookie NSHTTPCookieStorage

但是,您可以通过实现可以完全自定义身份验证处理NSURLConnection的委托 来极大地改进您的代码。connection:willSendRequestForAuthenticationChallenge:

于 2013-07-18T07:54:18.283 回答
1

看起来是服务器问题。服务器应该发送响应头告诉 URL 加载系统不要缓存响应。

于 2013-07-18T07:44:04.397 回答