2

一部のページでforce_sslを使用する必要があるRails 3.1.4アプリを実行していますが、SSLを使用したくないページもあります。force_http のように、force_ssl の反対はありますか? 問題は、SSL である必要のないページがいくつかあり、https を使用してプルできない要素が含まれていることです (そのため、ユーザーはブラウザーから安全でないエラーを受け取ります)。

force_ssl ページに移動すると正常に動作しますが、force_ssl ではない他のページに移動すると、https が残っているため、ブラウザから安全でないページ エラーが表示されます。したがって、要素 https を作成できないページでは、SSL の使用を強制的に回避したいと考えています (つまり、強制的に http に戻します)。

前もって感謝します。

4

3 に答える 3

5

わかりました、私にとってうまくいくと思われる方法を見つけました:

私のセッションコントローラーでは、これを追加しました:

force_ssl :only => [:new, :create]

したがって、これら 2 つのアクションのみが SSL 経由で呼び出されます。現在、ユーザーが正常にログインすると、ページは非 SSL 接続にリダイレクトされます。

ページを強制的に非 SSL にする限り、次の質問を試してください: Rails 3.1 Force Regular HTTP、before_filter で Joost の回答を探します。

これは彼が投稿したものです:

class ApplicationController < ActionController::Base
  before_filter do
    if request.ssl && Rails.env.production?
      redirect_to :protocol => 'http://', :status => :moved_permanently
    end
  end
end

免責事項:上記のコードは私のものではありません。リンクの質問からコピーしました。便宜上、ここに配置しました。元のコンテキストで表示するには、上記のリンクにアクセスしてください。

また、非 SSL の強制に関しては、それが良いアイデアかどうかはわかりません。ユーザーが SSL 接続を要求し、あなたが証明書を持っている場合、それを渡してはどうでしょうか? SSL がブラウザにより多くの負担をかけることには同意しますが、常に SSL でサーフィンするのが好きな人もいます。SSL で動作しないコードがある場合は、それが非 SSL を強制する正当な理由です。

乾杯。

于 2012-05-18T08:33:04.670 に答える
0

ループなしで動作するようになりました。私が認識していないブラウザで発生しない限り。

before_filter do
  unless params[:controller] == 'whatever_controller_name_you_are_serving_https_to'
    if request.ssl? && Rails.env.production?
      redirect_to :protocol => 'http://', :status => :moved_permanently
    end
  end
end
于 2014-07-02T20:04:38.227 に答える