我的 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 有可能不这样做吗?