1

我正在开发一个 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 有用,因为它似乎会导致页面缓存并且很难清理这个缓存?

4

1 回答 1

2

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

现在对于您的问题,我怀疑这与 DNS 有什么关系,并且更有可能与模式匹配逻辑的正则表达式有关,它应该在何时重定向。它是否包括主机名/域?如果是这样,它是否与您在登台中运行的域匹配?

于 2012-05-04T08:39:47.253 回答