iOSネットワークリクエストのCookie
5488 ワード
最近のプロジェクトではネットワークリクエストに関する知識が用いられており,以前は権限認証に関する知識を簡単に記録して興味のあるものを持って場を捧げることができた.次は本題に入ります.
Cookie
まずクッキーが何なのか簡単に理解しましょう.
私たちが使用するHTTPプロトコルの転送時にデータのインタラクションが完了すると、サービス側とクライアントとの接続がオフになります.クライアントが再びサービス側とデータを交換するときに、すべてが再びやり直される場合は、Cookieを使用する必要があります.
クライアントとサービス側が初めて接続する場合、サービス側はクライアントにCookie(通行証)を発行し、再びサービス側と対話する場合はこのCookie(通行証)を持参する必要があり、サービス側はこのCookie(通行証)を通じて訪問者の身分を確認することができる.例えば栗:ユーザがあるサイトにログイン操作を行うと、サービス側はCookie情報を端末に返信し、端末はこれらの情報を保存し、次回このサイトに再度アクセスすると、端末は保存するCookie情報を一括してサービス側に送信し、サービス側はCookie情報が有効か否かによってこのユーザが自動的にログインできるか否かを判断する.
iOSで使用する
NSHTTPCookieStorage
このクラスは、HTTPリクエストのCookieをすべて管理する単一の設計モデルを採用しています.では、一般的な方法を見てみましょう.
NSHTTPCookie
CookieはiOSシステムで
この2つのクラスに基づいて、リクエスト中のCookieを管理することができます.
私たちは「http://www.baidu.com「例として、これらのものを見てみましょう.
ステップ1:リクエストを作成します
ステップ2:リクエストが完了したら画面をクリックしてクッキーを取得
文章はここで終わります.辛抱強く見てくれてありがとう.
Cookie
まずクッキーが何なのか簡単に理解しましょう.
私たちが使用するHTTPプロトコルの転送時にデータのインタラクションが完了すると、サービス側とクライアントとの接続がオフになります.クライアントが再びサービス側とデータを交換するときに、すべてが再びやり直される場合は、Cookieを使用する必要があります.
クライアントとサービス側が初めて接続する場合、サービス側はクライアントにCookie(通行証)を発行し、再びサービス側と対話する場合はこのCookie(通行証)を持参する必要があり、サービス側はこのCookie(通行証)を通じて訪問者の身分を確認することができる.例えば栗:ユーザがあるサイトにログイン操作を行うと、サービス側はCookie情報を端末に返信し、端末はこれらの情報を保存し、次回このサイトに再度アクセスすると、端末は保存するCookie情報を一括してサービス側に送信し、サービス側はCookie情報が有効か否かによってこのユーザが自動的にログインできるか否かを判断する.
iOSで使用する
NSURLRequest
は、セッションごとのCookieを自動的に保存しています.もちろん、保存する必要がない場合は、この属性HTTPShouldHandleCookies
をNOに設定する必要があります.では、私たちが要求するCookieはNSHTTPCookieStorage
に存在します.NSHTTPCookieStorage
このクラスは、HTTPリクエストのCookieをすべて管理する単一の設計モデルを採用しています.では、一般的な方法を見てみましょう.
//
@property(class, readonly, strong) NSHTTPCookieStorage *sharedHTTPCookieStorage;
// Cookie , iOS Cookie NSHTTPCookie ,
@property (nullable , readonly, copy) NSArray *cookies;
// Cookie
- (void)setCookie:(NSHTTPCookie *)cookie;
// Cookie
- (void)deleteCookie:(NSHTTPCookie *)cookie;
// Cookie(iOS 8 )
- (void)removeCookiesSinceDate:(NSDate *)date;
// Url Url Cookie
- (nullable NSArray *)cookiesForURL:(NSURL *)URL;
// Cookie ,
@property NSHTTPCookieAcceptPolicy cookieAcceptPolicy;
typedef NS_ENUM(NSUInteger, NSHTTPCookieAcceptPolicy) {
// Cookie
NSHTTPCookieAcceptPolicyAlways,
// Cookie
NSHTTPCookieAcceptPolicyNever,
// Cookie
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
};
// cookieAcceptPolicy NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
- (void)setCookies:(NSArray *)cookies forURL:(nullable NSURL *)URL mainDocumentURL:(nullable NSURL *)mainDocumentURL;
NSHTTPCookie
CookieはiOSシステムで
NSHTTPCookie
オブジェクトにカプセル化されています.次に、このクラスの使用方法を簡単に紹介します.//
- (nullable instancetype)initWithProperties:(NSDictionary *)properties;
+ (nullable NSHTTPCookie *)cookieWithProperties:(NSDictionary *)properties;
// Cookie HTTP
+ (NSDictionary *)requestHeaderFieldsWithCookies:(NSArray *)cookies;
// URL Cookie
+ (NSArray *)cookiesWithResponseHeaderFields:(NSDictionary *)headerFields forURL:(NSURL *)URL;
//Cookie
@property (nullable, readonly, copy) NSDictionary *properties;
//
@property (readonly) NSUInteger version;
//
@property (readonly, copy) NSString *name;
//
@property (readonly, copy) NSString *value;
// YES session ,NO
@property (readonly, getter=isSessionOnly) BOOL sessionOnly;
//
@property (nullable, readonly, copy) NSDate *expiresDate;
//
@property (readonly, copy) NSString *domain;
//
@property (readonly, copy) NSString *path;
//
@property (readonly, getter=isSecure) BOOL secure;
// HTTP
@property (readonly, getter=isHTTPOnly) BOOL HTTPOnly;
//
@property (nullable, readonly, copy) NSString *comment;
// Cookie Url
@property (nullable, readonly, copy) NSURL *commentURL;
//
@property (nullable, readonly, copy) NSArray *portList;
この2つのクラスに基づいて、リクエスト中のCookieを管理することができます.
私たちは「http://www.baidu.com「例として、これらのものを見てみましょう.
ステップ1:リクエストを作成します
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[task resume];
ステップ2:リクエストが完了したら画面をクリックしてクッキーを取得
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSHTTPCookieStorage *storeage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSLog(@"%@",storeage.cookies);
}
:
<__nsarraym>(
,
,
,
,
,
)
文章はここで終わります.辛抱強く見てくれてありがとう.