0

我试图强制我的控制器生成的所有 url 为“https”,否则重定向到 https。我尝试了此博客中解释的方法以及 Olly 建议方法, 如果我尝试访问我的应用程序,则会收到此错误:

此网页有重定向循环

https://'example.com' 上的网页导致了过多的重定向。清除此站点的 cookie 或允许第三方 cookie 可能会解决问题。如果不是,则可能是服务器配置问题,而不是您的计算机问题。

清除 cookie 无济于事。为什么会进入循环?我确保在 request.ssl 为 false 的情况下运行代码。我正在使用 Rails 2.3.10。所以这是我尝试过的,在我的应用程序控制器中我添加了:

     url_for unless (Rails.env.test? || Rails.env.development?) 
     def default_url_options(options) 
    { :only_path => false, :protocol => 'https' } unless (Rails.env.test? ||  Rails.env.development?) 
    end

我也试过

def redirect_to_https
  redirect_to :protocol => "https://" unless (request.ssl? || Rails.env.test? || Rails.env.development? || local_request?)
end
4

1 回答 1

0

我正在使用的域在不同的应用程序之间共享,因此请求由 apache 服务器接收并转发到应用程序服务器,因此以这种方式强制执行 ssl 不起作用,因为应用程序将请求视为“本地”并且总是结束http 所以它进入一个重定向循环。我将改为在服务器级别强制执行 https。

于 2012-10-29T19:36:36.390 回答