以下の内容はhttps://blog.willnet.in/entry/2013/04/20/134700より取得しました。


rack-ssl で http と https を混在させようとして諦めた

表題の通りのメモ。rails で一部のパスだけ http 、他は https にしたいなーと思ってざっくり調べたのでした。

調べたこと

  • Rails 3 では config.force_ssl = true としたら rack-ssl が使われる
    • Rails 4 では ActionDispatch::SSL が使われる
    • ソース見た感じ、 ActionDispatch::SSL は rack-ssl を少しだけいじったものに見える
  • rack-ssl には、ssl の対象にならない条件を exclude オプションに callable なオブジェクトを渡すことで指定できる
  • Rails 4(ActionDispatch::SSL) では exclude オプションが無い

なぜ ActionDispatch::SSL に exclude オプションが入っていないか(削除されたか)というと、 rack-ssl(および ActionDispatch::SSL) で使われる HSTS はドメインごとの指定なので、そもそも rack-ssl (およびActionDispatch::SSL)は http/https の混在をさせる想定の設計じゃないんだよとのこと。

もし Rails 4 で exclude オプション使いたければ、 ActionDispatch::SSL と rack-ssl を差し替えてやればできそう。しかし上述の理由によりほぼ意味がない。

結論

http/https の混在環境を作りたければ ActionController の force_ssl を使うべき。

参考




以上の内容はhttps://blog.willnet.in/entry/2013/04/20/134700より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14