Perlを中心とした技術系の話などをつらつら

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); 
恥ずかしながらこのことを知らず、クッキーが保存されないよ~としばらく半べそ状態でした。。

Technorati TAGTechnorati TAG

Posted by horiuchi at 2004年05月31日 18:43

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

Post a comment




Remember personal info?