rfc.cookie
- HTTPクッキー ¶RFC 6265で定義されている「クッキー」情報を パースしたり構築したりするための手続きを定義しています。
{rfc.cookie
}
リクエスト・ヘッダの Cookie の値のクッキー文字列 string を
パースします。通常、CGI プログラムでは、同じ情報は環境変数
HTTP_COOKIE を通して利用できます。
リクエスト・ヘッダ Cookie2 を通してクッキーのバージョンが分かる
場合は、version へ整数のバージョンとして渡されなければなりません。
そうでなければ、parse-cookie-string
は string からバージョンを
取り出します。
結果は以下のフォーマットを持ちます。
((<name> <value> [:path <path>] [:domain <domain>] [:port <port>]) ...)
<name> は属性名で、<value> は対応する値です。
属性が値を持たない場合、<value> は #f
になります。
(属性が NULL 値を持つ場合は、""
となることに注意。)
属性がパスやドメイン、ポート番号のオプションを持つ場合は、
キーワード-値のペアの形式で与えられます。
註: 特定のクッキーの値を簡単に取り出すには
rfc822-header-ref
が使えます (rfc.822
- RFC822メッセージ形式参照)。
{rfc.cookie
}
与えられたクッキーの仕様のリストから、Set-cookie2
か
Set-cookie
ヘッダに適切なクッキー文字列を作ります。
オプションの version 引数は、互換性のために受容されますが無視されます。
クッキーの仕様は以下のフォーマットを持ちます。
(<name> <value> [:expires <data/time>] [:max-age <age>] [:domain <domain>] [:path <path>] [:secure <boolean>] [:http-only <boolean>]
<name>
文字列。クッキーの名前。
<value>
クッキーの値。文字列か、値が必要なければ #f
。
<domain> <path>
文字列。
<boolean>
真偽値。
<age>
非負の正確な整数。
<date/time>
整数(エポックからの秒数)か、Netscape のクッキー仕様に従うフォーマットされた
日付文字列か、<time>
もしくは<date>
オブジェクト
(時間,および srfi.19
- 時間のデータ型と手続き参照)。
属性の指定は順不同です。属性値は適切にクォートされます。
互換性のために、古い規格(RFC2965, RFC2109, 古のNetscape cookie specificaiton)
で指定されていたいくつかの属性も認識され出力に含められます
(comment
, comment-url
, discard
, port
,
version
)。が、新規のコードではこれらの属性を使うべきではありません。
戻り値はそれぞれのクッキー文字列のリストです。(Set-cookie
を使う)
古いスタイルのプロトコルでは、それぞれを独立したヘッダとして送らなければ
なりません。(Set-cookie2
ヘッダを使う)新しいプロトコルでは、
それらをカンマで繋ぎ、一度に送ることができます。詳細は RFC6265 を見て下さい。
例:
(construct-cookie-string `(("name" "foo" :domain "foo.com" :path "/" :max-age 86400))) ⇒ ("name=foo;Domain=foo.com;Path=/;Max-age=86400")