在heroku中将force_ssl设置为false后,如何删除无限重定向循环?

时间:2012-05-02 20:15:17

标签: ruby-on-rails ssl ruby-on-rails-3.1 dns

我正在开发一个Rails 3.1.0应用,需要在某些页面中使用ssl,具体取决于用户。

我在config / enviroments / staging.rb中将config.force_ssl设置为false。添加了一个前置过滤器,用于决定是否重定向到http。如果我清理缓存,重定向将在开发中工作。

事情是在暂存中,它会导致重定向循环。我相信force_ssl使用永久重定向,因此当我询问有关我的应用中的页面的DNS时,它仍然会尝试使用ssl重定向到该页面。这有意义吗?

我有什么选择?

修改

我清理了缓存。这仅在我第一次进入页面时解决了问题。让我说我刷新所有缓存并进入http页面。这将显示http页面。当我退出页面时,输入另一个有ssl的页面并尝试返回到http页面,无限重定向再次启动。

我实施的解决方案是重定向到不安全的子域。我们称之为“不安全”。因此,当我需要重定向到http页面时,我会重定向到http://unsafe.mydomain.com。这解决了无限重定向问题,但仍然缓存了一些https页面。

我想真正的问题是什么时候使用有用:status => :moving_permanently因为它似乎导致页面缓存而且清理这个缓存变得很困难?

1 个答案:

答案 0 :(得分:2)

首先,为什么你不只是强制所有页面的SSL?性能开销非常小,但在混合模式下运行时,如果您不小心,可能会泄漏您认为安全的cookie。无处不在的SSL:)

现在回答你的问题,我怀疑这与DNS有什么关系,并且更可能与模式匹配逻辑的正则表达式相关,它应该重定向。它包含主机名/域吗?如果是,那么它与您在分段中运行的域匹配吗?