2012-10-17 51 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

相关问题