HTTP Cookie

HTTP Cookie は、クライアント アプリケーションのシステムに状態情報を格納および取得するためのメカニズムをサーバーに提供します。 このメカニズムにより、Web ベースのアプリケーションは、選択したアイテム、ユーザー設定、登録情報、および後で取得できるその他の情報に関する情報を格納できます。

cookie に関連する 2 つのヘッダー (Set-Cookie と Cookie) があります。 Set-Cookie ヘッダーは、ユーザーのシステムで Cookie を作成するために使用される HTTP 要求に応答してサーバーによって送信されます。 Cookie ヘッダーは、一致するドメインとパスを持つ Cookie がある場合、サーバーに送信される HTTP 要求と共にクライアント アプリケーションによって含まれます。

Set-Cookie応答ヘッダーは、次の形式を使用します。

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

パターン =の値 の後に続く 1 つ以上の文字列シーケンス (セミコロンで区切る) を、Set-Cookie応答ヘッダーに含める必要があります。 サーバーは、これらの文字列シーケンスを使用して、クライアントのシステムにデータを格納できます。

有効期限は expires=date という形式を使用して設定されます。 date はグリニッジ標準時 (GMT) の有効期限です。 有効期限が設定されていない場合、Cookie はインターネット セッションの終了後に期限切れになります。 それ以外の場合、Cookie は有効期限までキャッシュに保持されます。 日付には、次の形式を使用する必要があります。

DAY, DD-MMM-YYYYHH:MM:SS GMT

曜日 (日、月、火、水、木、金、土)。

Dd

月の日 (月の最初の日の場合は 01 など)。

うー ん

月の 3 文字の省略形 (1 月、2 月、3 月、4 月、5 月、6 月、7 月、8 月、9 月、10 月、11 月、12 月)。

Yyyy

年。

Hh

軍事時間の時間の値 (たとえば、22 は午後 10:00 になります)。

ミリメートル

分の値。

Ss

2 番目の値。

パターン domain=domain_name を使用したドメイン名の指定は、永続的な Cookie では省略可能であり、Cookie が有効なドメインの末尾を示すために使用されます。 ドメインを指定するセッション Cookie は拒否されます。 指定したドメイン名の末尾が要求と一致する場合、Cookie はパスの照合を試み、Cookie を送信する必要があるかどうかを判断します。 たとえば、終了するドメイン名が .microsoft.com の場合、home.microsoft.com への要求と support.microsoft.com は、指定したパターンが要求と一致するかどうかを確認します。 .com、.edu、co.jp など、広く使用されているドメイン名の終わりに Cookie が設定されないようにするには、ドメイン名に少なくとも 2 つまたは 3 つのピリオドが必要です。 使用できるドメイン名は、.microsoft.com、.someschool.edu、.someserver.co.jp のようになります。 ドメインの Cookie を設定できるのは、指定したドメイン内のホストのみです。

パターン path=some_path を使用したパスの設定は省略可能であり、Cookie が有効な URL のサブセットを指定するために使用できます。 パスが指定されている場合、Cookie はそのパスに一致するすべての要求に対して有効と見なされます。 たとえば、指定したパスが /example の場合、パス /examplecode と /example/code.htm を持つ要求は一致します。 パスが指定されていない場合、パスは、Set-Cookie ヘッダーに関連付けられているリソースのパスであると見なされます。

Cookie は、https サーバーにのみ送信できることを指定するセキュリティで保護されたとしてマークすることもできます。

最後に、Cookie を HttpOnly (属性では大文字と小文字は区別されません) としてマークして、Cookie がスクリプト化不可能であり、セキュリティ上の理由からクライアント アプリケーションに表示しないことを示すことができます。 これは、Windows インターネット内では、 InternetGetCookie 関数を使用して Cookie を取得できないことを意味します。

Cookie ヘッダーは、ドメインとパスが要求と一致する Cookie を持つ HTTP 要求に含まれます。 Cookie ヘッダーの形式は次のとおりです。

Cookie: <name>=<value> [;<name>=<value>]...

形式 =の値を使用する 1 つ以上の文字列シーケンスには、Cookie で設定された情報が含まれます。

Cookie の生成

Microsoft インターネット エクスプローラーの Cookie を生成するには、Microsoft JScript の使用、WinINet 関数の使用、CGI スクリプトの使用の 3 つの方法があります。 すべてのメソッドで、Set-Cookie ヘッダーに含まれる情報を設定する必要があります。

次の例に示すように、動的 HTML (DHTML) オブジェクト モデルを使用して、ドキュメント オブジェクトの cookie プロパティを呼び出すことで Cookie を設定できます。

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

Cookie は、 InternetSetCookie 関数を使用してアプリケーションによって作成できます。 詳細については、「Cookie の 設定」を参照してください。

Cookie は、要求への HTTP 応答に含まれる CGI スクリプトの一部として Set-Cookie ヘッダーを含めることによって生成されます。

次の例は、Perl を使用する Set-Cookie ヘッダーを含む CGI スクリプトです。

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

Note

WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。