Cookieのhttponly属性を外す方法

Railsでセッションを作成するとブラウザにCookieが送信される。このCookieが普通にcookiesハッシュで作成したCookieと違うのは、Cookieのhttponly属性がonになって送信されることだ。

これがonのCookieは、ブラウザ上のjavascriptで、

document.cookie

としても値を取得できない。

クライアント側でセッションのCookieを意図的にハックしたい場合、以下の方法でhttponly属性をoffにすることができる。

ActionController::Base.session_options[:httponly] = false

RailsによるアジャイルWebアプリケーション開発 第2版」によると、

セッションの場合、オプションはグローバルなので、環境ファイル(config/environment.rbまたはconfig/environments内のファイルのひとつ)で設定できます。

とあるので、環境設定ファイルconfig/initializers/session_store.rbで設定を行うことで、これを実現することができた。