我正在将应用程序移动到heroku,并且在使用ssl和重定向时遇到了一些问题。在force_ssl之前重定向到'www'
我在rails 3.1上,我试过在production.rb环境中用中间件强制ssl。我都尝试将它添加到应用程序控制器。
问题是,当我执行ssl的完整站点强制时,在达到SSL要求之前,我无法重定向到www。这很重要,因为如果用户访问https://mydomain.com,则会显示一个错误的SSL证书警告。如果他们继续,他们然后重定向到'www'。
SSL强制正在工作,重定向到'www'子域正在工作,我只需要首先执行重定向。
任何想法?
每Nathan的评论:
我有一个不完美的解决方案。我的root_path不是强制ssl。敏感信息的所有部分都强制它。抵达后,所有的流量被定向到www这个在我的routes.rb:
constraints(:host => "domain.com") do
match "(*x)" => redirect { |params, request|
URI.parse(request.url).tap { |x| x.host = "www.domain.com" }.to_s
}
end
这可能隐藏了大部分的问题,由时间来对用户符号或其他任何点击,他们现在在www域。浏览器不会发出有关证书的警告。这对这个特定的项目工作得很好。另一个项目我最终花了大笔钱购买一张已签名的通配符证书。
对不起,不是真正的解决方案。如果您去https://domain.com/forcedsslpath该项目仍然会提供安全警告。
你能解释一下你做了什么来解决这个问题吗?我有同样的问题。我看到你接受了一个答案,但我不确定在阅读后应该尝试什么。谢谢! –
在heroku上托管时,我遇到了各种指南中的相同问题。我从来没有想过没有去通配证书。 – Kombo