0

これがユースケースです。

  1. アプリケーションの実行、認証ヘッダーは nil に設定されています。新鮮なデータが得られます。

    [_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) {}];

次の 2 つの方法で NSMutableURLRequest を作成しようとしました。

    _request = [NSMutableURLRequest requestWithURL:url];

    _request = [[NSMutableURLRequest alloc] initWithURL:url
                                                                cachePolicy:NSURLRequestReloadRevalidatingCacheData
                                                            timeoutInterval:60];
4

2 に答える 2

3

リクエストを使用する前に、Cookie の使用を無効にすることができます。

[_request setHTTPShouldHandleCookies:NO];

NSHTTPCookieStorageまたは、シングルトンから任意の Cookie (または関連する Cookie) を削除します。

ただし、認証処理を完全にカスタマイズできるNSURLConnectionデリゲートを実装する ことで、コードを大幅に改善できます。connection:willSendRequestForAuthenticationChallenge:

于 2013-07-18T07:54:18.283 に答える
1

サーバーの問題のようです。サーバーは、応答をキャッシュしないように URL 読み込みシステムに通知する応答ヘッダーを送信する必要があります。

于 2013-07-18T07:44:04.397 に答える