2011-02-10 69 views
1

我發現當頁面使用SSL/HTTPS時,AJAX調用不能在我的Rails站點上工作。我通過向涉及的控制器添加了爲Rails 2中的所有頁面設置ssl_allowed/ssl_required?

ssl_allowed :action1, :action2, :actionN 

我預見到這會是一種痛苦,並且在將來會出現錯誤,因爲我會毫不留情地將操作添加到ssl_allowed列表中。

有沒有辦法在[ssl_requirement] [1] gem中全局打開ssl_allowed/ssl_required,對於我網站中每個控制器的所有操作?我嘗試添加下列到ApplicationController中,但沒有奏效:

ssl_allowed :all 
+0

看看:http://blog.documentcloud.org/blog/2011/02/https-by-default/希望它有用 – apneadiving 2011-02-10 19:14:10

回答

2

我發現粗俗的ssl_requirement叉子它能使github上(link)「ssl_allowed:所有」,並取代了我的創業板複製與該版本。現在我在我的ApplicationController和其他地方使用「ssl_allowed:all」。正是我想要的。

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 
相關問題