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

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

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

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

我有什么选择?

编辑

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

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

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

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

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