1

ページが SSL/HTTPS を使用している場合、Rails サイトで AJAX 呼び出しが機能しないことがわかりました。追加することでこれを回避しました

ssl_allowed :action1, :action2, :actionN

関連するコントローラーに。

間違いなく ssl_allowed リストにアクションを追加するのを忘れてしまうので、これは苦痛であり、将来バグが発生しやすいと予測しています。

サイト内のすべてのコントローラーのすべてのアクションに対して、[ssl_requirement][1] gem でグローバルに有効にする方法はありますssl_allowedか? ssl_requiredApplicationController に以下を追加しようとしましたが、うまくいきませんでした:

ssl_allowed :all
4

2 に答える 2

2

フォークされたプラグインに依存したくない場合は、ssl_allowed? をオーバーライドできます。あなたのコントローラーで:

 class ApplicationController < ActionController::Base
    ...
    private

    def ssl_allowed?
       true
    end
 end

編集:これは、私が思っていたことをしません。ssl_required が指定されていないページの http へのリダイレクトを無効にする代わりに、リダイレクト プロセス全体を省略して何もしません。これは非常に悪いです。コード:

 def ensure_proper_protocol
   return true if ssl_allowed?

   if ssl_required? && !request.ssl?
     redirect_to "https://" + request.host + request.request_uri
     flash.keep
     return false
   elsif request.ssl? && !ssl_required?
     redirect_to "http://" + request.host + request.request_uri
     flash.keep
     return false
   end
 end

ssl_allowed を追加しますか? このようなメソッドは、コードが代わりに次の場合にのみ答えになります。

def ensure_proper_protocol
  if ssl_required? && !request.ssl?
    redirect_to "https://" + request.host + request.request_uri
    flash.keep
    return false
  elsif request.ssl? && !ssl_required? && !ssl_allowed?
    redirect_to "http://" + request.host + request.request_uri
    flash.keep
    return false
  end
end
于 2011-06-14T17:46:38.310 に答える
2

「ssl_allowed :all」を有効にするGrosser の ssl_requirement fork を github (リンク) で見つけ、gem のコピーをそのバージョンに置き換えました。現在、ApplicationController で "ssl_allowed :all" を使用していますが、他の場所では使用していません。まさに私が欲しかったもの。

于 2011-02-11T17:24:21.223 に答える