よくよく考えれば当たり前のことなんだけど、結構ハマった。。
PHPの設定にあるsession.cookie_secureについて、この値をtrue(有効)とした場合のHTTP環境とHTTPS環境の挙動の話。
HTTPS環境での挙動
SessionのCookieを付与する際、デフォルトでセキュアフラグが立つ。
(具体的には、setcookieの6番目の引数をtrueにした時の挙動と同様)
→一度作成したCookieは、expireで指定された期限内で有効
とまあ、ここまではよくある話。
HTTP環境での挙動
SessionのCookieを付与する際、デフォルトでセキュアフラグが立たない。
(具体的には、setcookieの6番目の引数をfalseにした時の挙動と同様)
→一度作成したCookieは、アクセス毎に値が更新される。
ということは、HTTP環境でアクセスする場合、session.use_trans_sidを有効とかにして、都度session_idにセットしてあげないと、同じセッションを見に行かない。(このやり方がいいかどうかは置いておいて)
内部的なことまでは調べられていないんだけど、おそらくsession.cookie_secureが有効の時にHTTP環境でsessionを発行すると、アクセス毎に意図的にsession_regenerate_id()とかが動いているのかなと思ってみる。