0

我的 Rails 应用程序有一些页面是 SSL 必需的,而另一些页面是 SSL 可选的。可选页面使用一些在场外提供的资产(来自供应商的图像),这些资产同时具有 http 和 https URL。当通过 SSL 访问页面时,我需要使用 https 以避免可怕的“此页面包含安全和不安全元素”警告。

我已经编写了代码,默认情况下将图像 URL 返回为 http,如果需要,则返回 https。我现在的问题是在视图中确定请求是如何进来的。request.ssl?在视图中不起作用。

我试过使用 before_filter 来设置类似@ssl_request 的东西,使用 request.ssl?,但这也总是返回 false。有没有更优雅的方法来做到这一点?

服务器堆栈是 Nginx 和Passenger。其他具有 Apache => Mongrel 堆栈的应用程序通过 X_FORWARDED_PROTO 标头告诉 Rails 正在使用或未使用 SSL;Nginx/Passenger 有可能不这样做吗?

4

2 回答 2

1
<img src="//cdn.example.com/images/99dbe20bc52e4caa.jpg">
于 2010-03-31T15:08:01.130 回答
1

在 application.rb 中尝试 before_filter:

before_filter { |c| UMNAuthFilter.filter(c) if c.request.ssl? }

编辑添加正确性:)

于 2010-03-31T15:19:53.550 回答