iOSにおけるクッキーの簡単なアプリケーション
3776 ワード
C
サーバは、ユーザにウェブページを送信すると、HTTPのヘッダにクッキーを送信し、ユーザ情報を記録し、ユーザが同じドメイン名にアクセスする内容は、ブラウザがクッキーをサーバに送信する.
O Cookieは、クライアントストアサーバ状態にあるメカニズムであり、Webサーバは、Set-CookieまたはSet-Cookie 2 HTTPヘッダを介してCookieを設定することができる. Cookieは、セッションCookieと持久的なCookieの2つのクラスに分けることができ、セッションCookieは一時的なCookieであり、現在のセッションが終了したときにCookieは削除されます.持久的なCookieはユーザーのハードディスクに格納され、ブラウザは終了し、再起動後もCookieは依然として存在します.セッションCookieと持続的なCookieの違いは、期限切れ時間であり、Discardパラメータ(Cookieバージョン1)が設定されている場合、またはExpires(Cookieバージョン0)またはMax-Age(Cookieバージョン1)が設定されていない場合、このCookieはセッションCookie である. Cookieには2つのバージョンがあります.一つはバージョン0とバージョン1(RFC 2965)です.現在ほとんどのサーバが使用しているCookie 0です. Cookieに関する詳細は、「HTTP権威ガイド」の関連する章を参照してください. O NSHTTPCookieは、iOSでNSHTTPCookie類を用いてクッキーをパッケージ化し、NSHTTPCookieの方法でクッキーの汎用性を読み出す.(属性の意味は後で会います) NSHT TPCookie Strageリンゴは、クッキーをどのように管理していますか?NSHTTPCookie Storrage単体は、NSHT TPCookieオブジェクトをすべて管理するインターフェースを提供しています.OS Xでは、クッキーはすべてのプログラムで共有されますが、iOSでは、クッキーは現在のアプリケーションでのみ有効です.
個人的によく使われているのは、name、value、domainの三つの属性です.cookieメカニズムはHTTPプロトコルの標準的な内容ですが、クライアントが手動で処理する必要はありません.しかし、信頼できないバックグラウンドやwebフロントエンドの同僚に会ったら、手動で取り出して彼に伝える必要があります.....取ってもいいです.クライアントが何を言っても計算しません.
Cookie StrageはiOS 8以降、指定日後のクッキーを整理する方法を追加しました.アプリケーション内で再登録またはcasサーバを終了すると、この方法を選択して、cookieを削除し、セッションをオフします.そうでないとcasは重複してログインできません.
もう一つの問題があります.ドメインをまたぐ場合、クッキーはどうすればいいですか?自動的に持ち運びができますか?まだ検討していません.後で更新します.
サーバは、ユーザにウェブページを送信すると、HTTPのヘッダにクッキーを送信し、ユーザ情報を記録し、ユーザが同じドメイン名にアクセスする内容は、ブラウザがクッキーをサーバに送信する.
O
NSDictionary *properties;//
NSUInteger version;
NSString *name;
NSString *value;
NSDate *expiresDate;
BOOL sessionOnly;
NSString *domain;
NSString *path;
BOOL secure;
BOOL HTTPOnly;
NSString *comment;
NSURL *commentURL;
NSArray *portList;
クッキーは手で処理する必要が少ないですが、アップルのお父さんは便利な作成方法を提供してくれました.// Cookie,
+ (id)cookieWithProperties:(NSDictionary *)properties;
- (id)initWithProperties:(NSDictionary *)properties;
// HTTP cookie header ,
// NSHTTPCookie HTTP cookie header
+ (NSDictionary *)requestHeaderFieldsWithCookies:(NSArray *)cookies;
// headerFileds Cookie , NSHTTPCookie 。 headerFileds cookie , headerFileds cookie domain, theURL domain, path, ”/”.
+ (NSArray *)cookiesWithResponseHeaderFields:(NSDictionary *)headerFields forURL:(NSURL *)theURL;
NSURLRequestがcookieを使用しないことを明確に指定しない限り、URL loading systemは自動的にNSURLRequestに適切なストレージクッキーを送信します.NSURL Resonseから戻ってきたクッキーも、現在のcookieアクセスポリシー(cookie acceptance policy)に従ってシステムに受信されます.// sharedHTTPCookieStorage NSHTTPCookieStorage 。
+ (NSHTTPCookieStorage *)sharedHTTPCookieStorage];
// NSHTTPCookieStorage cookie
- (NSArray *)cookies;
// URL cookie
- (NSArray *)cookiesForURL:(NSURL *)theURL];
// / Cookie
– deleteCookie:;
– setCookie:;
– setCookies:forURL:mainDocumentURL:;
// NSHTTPCookieStorage / cookie , NSHTTPCookieAcceptPolicyAlways.
- (NSHTTPCookieAcceptPolicy)cookieAcceptPolicy;
- (void)setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)aPolicy;
全部で三つのcookie accept policyがあります.typedef enum {
NSHTTPCookieAcceptPolicyAlways, // cookie, .
NSHTTPCookieAcceptPolicyNever, // cookie
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain // main document domain cookie.
} NSHTTPCookieAcceptPolicy;
k個人的によく使われているのは、name、value、domainの三つの属性です.cookieメカニズムはHTTPプロトコルの標準的な内容ですが、クライアントが手動で処理する必要はありません.しかし、信頼できないバックグラウンドやwebフロントエンドの同僚に会ったら、手動で取り出して彼に伝える必要があります.....取ってもいいです.クライアントが何を言っても計算しません.
// domain cookies;
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@"http://www.baidu.com"]];
for (NSHTTPCookie *cookie in cookies) {
if ([cookie.name isEqualToString:@"yourTokenName"]) {
return cookie.value; // cookie ;
}
}
iCookie StrageはiOS 8以降、指定日後のクッキーを整理する方法を追加しました.アプリケーション内で再登録またはcasサーバを終了すると、この方法を選択して、cookieを削除し、セッションをオフします.そうでないとcasは重複してログインできません.
- (void)removeCookiesSinceDate:(NSDate *)date;
eもう一つの問題があります.ドメインをまたぐ場合、クッキーはどうすればいいですか?自動的に持ち運びができますか?まだ検討していません.後で更新します.