IEでCookieが消えない!
ハマリましたので備忘録。
現象
IEでのみCookieが消えない
よく確認するとローカルのJettyではIE、FireFoxともにOKで、共有テスト機のJBOSSでのみ発生していたのでIE+JBOSSでのみ発生していた。
原因
無駄にCookie#setPath("")していた。
クッキー発行時はPathは無し。Cookie削除時に使っていたCookie制御のラッパークラスのコードに上記無駄なコードが入っていたため、空のPath指定が発生したため消えなかった。どういうことかまとめると…
IE→空のPath指定(;Path=)があるとPath指定扱いでCookieは消えない
FireFox→空のPath指定は空なので指定無しと見なして消える。
JBOSS→空でもPath指定されたので、Path指定発行。
Jetty→空はnullと同じだから発行しない。
ということでIE+JBOSSでのみ現象発生。
Cookie仕様を厳格に見たわけではないけど、おそらく明確にきまってないんでしょう。仕方ないですね。
そもそも便利だからと他で使ってたラッパークラスを安易に流用してしまった自分が悪い。大したことしない便利クラスはハマったら変なことしてないかさっさとコードを見ましょう!→自分