1

ユーザーに応じて一部のページにsslが必要なRails 3.1.0アプリに取り組んでいます。

config/enviroments/staging.rb で config.force_ssl を false に設定しました。http にリダイレクトするかどうかを決定する before フィルターを追加しました。キャッシュを消去すると、開発中にリダイレクトが機能します。

問題はステージングにあり、リダイレクト ループが発生します。force_ssl は永続的なリダイレクトを使用していると思われるため、DNS がアプリ内のページについて尋ねられた場合でも、ssl を使用してページにリダイレクトしようとします。これは意味がありますか?

私のオプションは何ですか?

編集

キャッシュを消去しました。これは、最初にページに入ったときにのみ問題を解決します。すべてのキャッシュを更新して http ページに入るとします。これにより、http ページが表示されます。ページを終了し、ssl を含む別のページに入り、http ページに戻ろうとすると、無限リダイレクトが再び開始されます。

私が実装した解決策は、安全でないサブドメインにリダイレクトすることでした。それを「安全でない」と呼びましょう。したがって、http ページにリダイレクトする必要がある場合は、http://unsafe.mydomain.comにリダイレクトします。これにより、無限リダイレクトは解決されますが、一部の https ページがまだキャッシュされています。

本当の問題は、 :status => :moved_permanently を使用するのがいつ役立つかということだと思います。ページがキャッシュされ、このキャッシュをきれいにするのが難しくなるからです。

4

1 に答える 1

2

まず、なぜすべてのページに SSL を強制しないのですか? パフォーマンスのオーバーヘッドはほとんどありませんが、混合モードで実行すると、注意を怠ると、安全な Cookie であると考えていたものがリークする可能性が生じます。どこでもSSL :)

あなたの質問に対して、これが DNS と関係があるとは思えず、リダイレクトする必要がある場合のパターン マッチング ロジックの正規表現と関係がある可能性が高くなります。ホスト名/ドメインは含まれていますか? その場合、ステージングで実行しているドメインと一致しますか?

于 2012-05-04T08:39:47.253 に答える