【发布时间】:2011-11-22 08:17:53
【问题描述】:
我正在将应用程序移至 heroku,但遇到了一些 ssl 和重定向问题。
我在 Rails 3.1 上,我尝试在 production.rb 环境中使用中间件强制使用 ssl。我都试过将它添加到应用程序控制器中。
问题是,当我执行 ssl 的完整站点强制时,我无法在达到 SSL 要求之前重定向到 www。这很重要,因为如果用户访问https://mydomain.com,将会向他们显示错误的 SSL 证书警告。如果他们继续,他们就会被重定向到“www”。
SSL 强制有效,重定向到“www”子域有效,我只需要先进行重定向。
有什么想法吗?
根据 Nathan 的评论:
我有一个不完美的解决方案。我的 root_path 没有强制使用 ssl。所有带有敏感信息的部分都在强迫它。到达后,所有流量都会在我的 routes.rb 中定向到 www:
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 上托管时,我在遵循各种指南时遇到了同样的问题。如果没有通配符证书,我永远不会弄明白。
标签: ruby-on-rails ruby-on-rails-3 ssl heroku