Cookie の保存と使用
このページでは、CSP ベースの Web アプリケーション 内での Cookie の保存および使用方法について説明します。
Cookie は、クライアント・ブラウザ内に格納される名前と値のペアです。クライアントからの後続の要求すべてには、それより前のすべての Cookie の値が含まれます。
Cookie 内に情報を格納すると、セッション の終了後に覚えておきたい情報がある場合に便利です (既定ではブラウザが閉じると Cookie は終了するため、これを行うには有効期限を設定する必要があります)。例えば、Cookie にユーザ名を保存しておくと、後続のセッションでこの情報を再度入力する必要がなくなります。
Cookie の保存
Cookie を保存するには、以下の例に示すように %response オブジェクト の SetCookie() メソッドを使用します。
Do %response . SetCookie ( "UserName" , name )
Cookie 定義には、以下の形式で有効期限とパスを含めることができます。
Do %response . SetCookie ( "NAME" , "VALUE" , expireData , path )
空白の expireData フィールドは、メモリ内の Cookie を定義します (現在のセッション でのみ利用できます)。ただし、expireData フィールドに値を指定すると、これは指定された日時に削除される永続的な Cookie になります。expireData フィールドの形式は、Wdy, DD-Mon-YYYY HH:MM:SS GMT です。例えば、Wednesday, 24-Mar-2024 18:12:00 GMT のようになります。
詳細は、クラス・リファレンスの "%CSP.ResponseOpens in a new tab " を参照してください。
SameSite 属性
Cookie の作成時に、SameSite 引数を指定できます。この引数は、サードパーティ・アプリケーションに関連する Cookie をアプリケーションでどのように処理するかを指定します (クロスサイト・リクエスト ともいいます)。この引数は、Web アプリケーション によって指定される既定の SameSite の値をオーバーライドします。
Cookie の SameSite の値を [None] に指定する場合は、HTTPS 接続を使用する必要があります。
Cookie へのアクセス
Cookie は、%request オブジェクト の Cookies プロパティにあります。このプロパティは多次元プロパティで、その添え字が Cookie の名前です。
%request オブジェクトは、Cookie のカウントや反復処理を行う方法も提供します。"%CSP.RequestOpens in a new tab " の "GetCookie() "、"NextCookie() "、および "CountCookie() " を参照してください。例えば、以下の単純なページ・クラスは、すべての Cookie とその値を表示します。
Class Sample . CookieDemo Extends %CSP . Page
{
ClassMethod OnPage () As %Status
{
Set html = "<!DOCTYPE html>"
_ "<html lang=""en"" dir=""ltr"">"
_ "<body>"
_ "<p>COOKIES:</p>"
_ "<ul>"
Set cookie = %request . NextCookie ( "" )
While cookie '= "" {
For count = 1 : 1 : %request . CountCookie ( cookie ) {
Set html = html _ "<li>" _ cookie _ " - "
_ .. EscapeHTML ( %request . GetCookie ( cookie , count ) )
_ "</li>"
}
Set cookie = %request . NextCookie ( cookie )
}
Set html = html _ "</ul>"
_ "</body>"
_ "</html>"
Write html
Quit $$$ OK
}
}