代码之家  ›  专栏  ›  技术社区  ›  pjmorse

如何使用ssl为站点访问者更改rails视图代码?

  •  0
  • pjmorse  · 技术社区  · 14 年前

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

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

    我试过使用before_过滤器,它使用request.ssl设置@ssl_请求?,但这也总是返回false。有没有比这更优雅的方法?

    服务器堆栈是nginx和passenger。其他带有apache=>mongrel栈的应用程序会传递一个x_forwarded_proto头来告诉rails ssl正在使用还是不在使用;nginx/passenger是否可能不这样做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris McCall    14 年前

    在application.rb中尝试prefore_过滤器:

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

    编辑以添加正确性:)

        2
  •  1
  •   yfeldblum    14 年前
    <img src="//cdn.example.com/images/99dbe20bc52e4caa.jpg">