2012-10-17 76 views
1

可能重複:
Why am I getting infinite redirect loop with force_ssl in my Rails app?試圖從應用控制器強制重定向到HTTPS

我在我的應用程序控制器有這樣的:

before_filter :redirect_to_ssl! 

def redirect_to_ssl! 
    redirect_to "https://" + request.host + request.fullpath if !request.ssl? && Rails.env.production? 
end 

然而,當我用https://查看我的網站(在生產模式下)它進入重定向循環...看起來request.ssl?即使我使用https協議,也會返回false .....現在,當我查看我的網站時,瀏覽器警告我我的ssl證書無法驗證 - 我想知道是否這是爲什麼request.ssl?返回false?什麼是一個好的解決方法?我應該檢查一下,看看request.protocol ==「https://」嗎?

回答

4

不要在控制器中這樣做。

相反,在config/environments/production.rb(無論和其他環境要使用SSL),這樣做:

config.force_ssl = true 

閱讀configuring Rails 3 to use HTTPS更多信息。

+1

不幸的是,這也會導致重定向循環... – patrick

+0

您是否從您的'ApplicationController'中刪除了重定向?如果您有任何其他重定向,請介意發佈代碼? – GladstoneKeep

+0

是的,我從應用程序控制器中刪除它...沒有其他重定向..問題必須在於SSL證書無法驗證的事實。 – patrick

相關問題