我正在开发一个 Rails 3.1.0 应用程序,该应用程序需要在某些页面中使用 ssl,具体取决于用户。
我在 config/enviroments/staging.rb 中将 config.force_ssl 设置为 false。添加了决定是否重定向到 http 的 before 过滤器。如果我清理缓存,重定向在开发中有效。
事情正在进行中,它会导致重定向循环。我相信 force_ssl 使用永久重定向,因此当 DNS 被问及我的应用程序中的页面时,它仍然尝试使用 ssl 重定向到页面。这有道理吗?
我有哪些选择?
编辑
我清理了缓存。这只解决了我第一次进入页面时的问题。假设我刷新所有缓存并进入 http 页面。这将显示 http 页面。当我退出页面时,进入另一个有 ssl 的页面并尝试返回 http 页面,无限重定向再次开始。
我实施的解决方案是重定向到不安全的子域。让我们称之为“不安全”。因此,当我需要重定向到 http 页面时,我会重定向到http://unsafe.mydomain.com。这解决了无限重定向,但仍然缓存了一些 https 页面。
我想真正的问题是什么时候使用 :status => :moved_permanently 有用,因为它似乎会导致页面缓存并且很难清理这个缓存?