Cookieの仕事原理とCookieプロトコル


Netscape cookie草案の完全なSet-Cookieヘッダに従う:
 
Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com; 
expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]
 
      Set-Cookieの各属性は以下のように説明されている.
  • Cusstomer=hungxpの「名前=値」は、名前をcustomerに設定した値「hungxp」です.この属性はCookieに必要です.
  • path=/fooは、どのアクセスがクッキーの送信をトリガするかを制御する.pathが指定されていない場合、cookieはこのサイトのすべてのHTTP転送時に送信されます.もしpath=/directoryが、次のページにアクセスしている場合のみ、cookieが送信されます.この例では、ユーザがディレクトリ/fooのコンテンツにアクセスする際に、このクッキーをブラウザから送信します.pathが指定されているが、pathが現在のアクセスのurlと一致しない場合、このcookieは無視されます.
  • doman=.ibm.com指定cookieはどのコンピュータに送信されますか?正常な場合、クッキーは最初にユーザにクッキーを送信するコンピュータのみに戻される.この例では、クッキーは、任意のibm.comドメインのホストに送信される.domainが空に設定されると、domainはcookieを提供するWebサーバと同じに設定される.domainが空でなく、cookieを提供するWebサーバのドメイン名と一致しない場合、このCookieは無視されます.
  • expires=Wedness day、19-OCT-05 23:40 GMTはクッキーが失効する時間を指定します.失効時間が指定されていないと、このクッキーはコンピュータのハードディスクに書き込まれず、このセッションが終了するまで継続されます.
  • secureがSecureという語をSet-Cookieヘッダの一部として使用する場合、cookieは、セキュリティチャネルを介してのみ伝送される(現在のSSLチャネル).さもないと、ブラウザはこのCookieを無視します.
  •        ブラウザがクッキーを受信すると、このクッキーとリモートウェブサーバに対する連続要求が一緒にブラウザによって送信されます.例えば、前のクッキーはブラウザに預けられ、ブラウザはURLを要求しようとします.http://www.ibm.com/foo/index.html を選択すると、下のHTTPヘッダが遠端のWebサーバに送信されます.
     
     
          典型的なネットブラウズの過程で、ブラウザはどうやってCookieを識別して処理しますか?
  • ブラウザは、パケットのCookieの動作手順をWebサーバに応答するために、1.Webサーバの応答ヘッダからすべてのクッキーを抽出する.2.これらのクッキーの構成部分(名称、値、経路など)を解析します.3.ホストがこれらのクッキーの設定を許可しているかどうかを判定します.許可すると、これらのCookieを地元に保存します.(要求されたurlと)
  • ブラウザは、Webサーバ要求のヘッダの中のすべてのCookieをスクリーニングするステップ:1.要求されたURLとローカルストレージクッキーの属性に基づいて、それらのCookieがWebサーバに送信されることができると判断する.2.複数のクッキーについて、送信の順序を判定する.3.送信したいCookieをHTTPヘッダに入れて一緒に送信します.
  •       ブラウザは、あるサイトのCookieを受け取るとき、Cookieのパラメータdomain、path、secureを確認し、現在のサイトとURLが一致するかどうかを確認します.一方では.ブラウザはCookieをアップロードする時、現在アクセスしているサイトの属性によって関連のCookieをアップロードしますが、他のCookieはアップロードしません.
     
     
          Cookie仕様は、ブラウザが同時に記憶できるCookieの数について規定している.
  • 合計300個のクッキー
  • 各Cookie 4 Kの記憶容量
  • 各domainまたはserver 20個のcookie.
  •      リンク:http://www.ibm.com/developerworks/cn/java/j-cookie/