如何使用SSL更改站点访问者的Rails视图代码?

时间:2010-03-31 15:05:35

标签: ruby-on-rails ssl actionview

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

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

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

服务器堆栈是Nginx和Passenger。 Apache =>的其他应用程序Mongrel堆栈传递一个X_FORWARDED_PROTO标头,告诉Rails SSL正在使用或未被使用; Nginx / Passenger可能不会这样做吗?

2 个答案:

答案 0 :(得分:1)

<img src="//cdn.example.com/images/99dbe20bc52e4caa.jpg">

答案 1 :(得分:1)

在application.rb中尝试使用before_filter:

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

编辑以增加正确性:)