Ruby CGI::Session で Cookie が発行されない
ログイン CGI でクッキーがクライアントに返らないので調べたら・・・
#!/usr/bin/env ruby18 require 'cgi/session' …(省略)… def create_session(cgi, timeout) begin # 既存のセッションは削除 session = CGI::Session.new(cgi, { 'new_session' => false }) session.delete rescue ArgumentError end return CGI::Session.new(cgi, { 'new_session' => true, 'session_expires' => timeout }) end end session = create_session(cgi, Time.now + 3600) session['savadata'] = "hogehoge" print "Content-Type:text/html\r\n\r\n" print <<EOF <html> <body> <p>login success.</p> </body> </html> EOF exit 0
としたらクッキーができない。
ヘッダの出力がないことに気づいた。
puts cgi.header({ 'Content-Type' => 'text/html'}) print <<EOF <html> <body> <p>login success.</p> </body> </html> EOF
として cgi.header を puts しなければいけなかった。