-1

Perl で CGI を使用して、Cookie の値内のコンマで区切られた単語のリストをブラウザに送信しようとしていますが、コンマ記号は常に "%2C" に変換されます。

top%2Cchay%2Cpisi

コードは次のとおりです。

$ud        = 'top,chay,pisi';
$cookie_ud = CGI::Cookie->new(
-name    => 'ud',
-value   => $ud,
-expires => '+25y'
);
print "Set-Cookie: $cookie_ud\n";

私が開発していないプログラムにこのデータを渡す必要があるため、これを行っています。サーバー側アプリケーションでコンマがエスケープされるのをどのように回避できますか? Cookie の値を「top%2Cchay%2Cpisi」ではなく「top,chay,pisi」にしたいと考えています。前もって感謝します。

4

2 に答える 2

2

実際、クライアント側がエスケープされたコンマを適切に処理していないことは確かですか? そうでない場合は、クライアントのバグです。Cookie の値は URL エスケープされることが想定されており、特にエスケープされていないコンマは有効な Cookie では禁止されています。

https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 :

cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                   ; US-ASCII characters excluding CTLs,
                   ; whitespace DQUOTE, comma, semicolon,
                   ; and backslash
于 2013-11-12T17:38:19.940 に答える