Cookies コレクションは、cookie の値を設定します。指定された cookie が存在しない場合は、新しく作成されます。cookie が存在する場合には、新しい値を受け取って古い値を破棄します。
Response.Cookies(cookie)[(key)|.attribute] = value
cookie
cookie の名前です。
key
省略可能なパラメータです。key を指定した場合、cookie は辞書とみなされ、key には value が設定されます。
attribute
cookie 自体に関する情報を指定します。次のいずれかを属性パラメータに指定できます。
名前 |
説明 |
Expires |
(書き込み専用) cookie の有効日付です。 |
Domain |
(書き込み専用) 指定した場合、cookie はこのドメインへの要求だけに送られます。 |
Path |
(書き込み専用) 指定した場合、cookie はこのパスへの要求だけに送られます。この属性を設定しなければアプリケーション パスが使われます。 |
Secure |
(書き込み専用) cookie が保護されているかどうかを指定します。 |
HasKeys |
(読み取り専用) cookie にキーが含まれているかどうかを指定します。 |
Value
key または attribute に割り当てる値を指定します。
たとえば、次のようにキーを付けて cookie を作成します。
<%
Response.Cookies("mycookie")("type1") = "sugar"
Response.Cookies("mycookie")("type2") = "ginger snap"
%>
次のヘッダーが送信されます。
Set-Cookie:MYCOOKIE=TYPE1=sugar&TYPE2=ginger+snap
この後キーを指定せずに myCookie への割り当てをすると、type1 および type2 が破棄されます。この例を次に示します。
<% Response.Cookies("myCookie") = "chocolate chip" %>
この例で、type1 と type2、およびそれらの値は破棄され、cookie myCookie の値は "chocolate chip" になります。
逆に、キーを付けて cookie を呼び出すと、設定されている可能性のある非キーの値が破棄されます。たとえば、上のコードの後で次のように Response.Cookies を呼び出します。
<% Response.Cookies("myCookie")("newType") = "peanut butter" %>
すると、値 chocolate chip は破棄され、newType に peanut butter が設定されます。
cookie がキーを持っているかどうかを調べるには次の構文を使います。
<%= Response.Cookies("myCookie").HasKeys %>
myCookie が cookie 辞書であれば前の値は TRUE に評価され、そうでなければ FALSE に評価されます。
ループを使うと cookie の属性を設定できます。たとえば、すべての cookies に特定の有効日付を設定するには、次の構文を使います。
<%
For Each cookie in Response.Cookies
Response.Cookie(cookie).ExpiresAbsolute = #July 4, 1997#
Next
%>
また、ループを使って、コレクション内のすべての cookies の値や、cookie 内のすべてのキーを設定することもできます。ただし、キーを持っていない cookie に対してはループが実行されません。これを防ぐには、.HasKeys の構文を使って cookie がキーを持っているかどうかを先にチェックしておきます。以上の例を次に示します。
<%
If Not cookie.HasKeys Then ' cookie の値を設定する Response.Cookies(cookie) = "" Else ' cookie コレクション内の各キーに値を設定する For Each key in Response.Cookies(cookie) Response.Cookies(cookie)(key) = "" Next key %>
次の例は、cookie への値の設定方法と、その属性への値の割り当て方法を示したものです。
<%
Response.Cookies("Type") = "Chocolate Chip"
Response.Cookies("Type").Expires = "July 31, 1997"
Response.Cookies("Type").Domain = "msn.com"
Response.Cookies("Type").Path = "/www/home/"
Response.Cookies("Type").Secure = FALSE
%>