2004年05月31日
mod_perl環境で複数Cookieを送信する
mod_perl環境でCookieをクライアントに送信するには、CGI::Cookieモジュールなんかを使って、こんな風にかけるんですが、
my $cookie = CGI::Cookie->new(%options);
$r->header_out('Set-Cookie' => $cookie);
違う名前の複数のCookieを送信したい場合、
my $cookie = CGI::Cookie->new(%options);
my $cookie2 = CGI::Cookie->new(%options2);
$r->header_out('Set-Cookie' => $cookie);
$r->header_out('Set-Cookie' => $cookie2);
としても最後にセットしたクッキーしか送られなかったりして、うきーっとなります。こういうときはheader_outの代わりにcgi_header_outを使うと複数のクッキーをセットできちゃいます。
my $cookie = CGI::Cookie->new(%options);
my $cookie2 = CGI::Cookie->new(%options2);
$r->cgi_header_out('Set-Cookie' => $cookie);
$r->cgi_header_out('Set-Cookie' => $cookie2);
恥ずかしながらこのことを知らず、クッキーが保存されないよ~としばらく半べそ状態でした。。
Continuing the discussion...
このエントリーのトラックバックURL:
http://hori-uchi.com/mt/trackback/160
Comments
バージョンが違うのか環境が違うのかは知りませんが、私の環境ではcgi_~メソッドが無く、全べそ状態でしたw
(Apache::RequestRec by mod_perl 1.99)
$r -> headers_out -> add ('Set-Cookie' => $cookie);
$r -> headers_out -> add ('Set-Cookie' => $cookie2);
最終的にモジュールのperldoc読んで上記のような代替メソッドを発見。
あまり情報の少ない部分でしたので、一応コメントしてみました。
以上でし。
Posted by 小達 at 2007年10月31日 17:55
情報ありがとうございます。
これは、mod_perl1.xと2.xの違いによるものですね。
mod_perl2.xではそう書かないといけないっすね。
Posted by hori-uchi at 2007年10月31日 18:05
