我的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可能不会这样做吗?
答案 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? }
编辑以增加正确性:)