Ric*_*its 6 ssl heroku ruby-on-rails-4
我有一个应用程序,它有一个控制器,其操作被强制为https,并使用以下代码进行一个例外:
force_ssl except: :show, if: :ssl_configured?
def ssl_configured?
Rails.logger.debug "ssl configured"
ENV["ENABLE_HTTPS"] == "yes"
end
Run Code Online (Sandbox Code Playgroud)
在其中一个视图中,我将URL定义为访问http链接:
place_url(place.id, protocol: 'http')
Run Code Online (Sandbox Code Playgroud)
当我在本地服务器上运行它时(使用NGINX/WEBrick),所有操作都被重定向到HTTPS,除了show动作仍然是不安全的.
但是,当我部署到heroku时,即使指向显示操作的链接显示为http,所有操作也会重定向到安全连接.
我没有在Heroku上做任何配置(除了设置环境变量),因此应用程序在WEBrick服务器上运行.
如何确定Heroku上忽略异常的原因?从Heroku文档中建议配置一个独角兽服务器开始我会更好吗?
我遇到了与您类似的问题,并且无法使用此方法在 Heroku 上的 Rails 4 上正常工作。所以我找到并安装了“rack-ssl-enforcer”gem,它与 Heroku 配合得非常好。
只需安装 gem 并将所需的任何配置添加到 application.rb 文件中即可。唯一需要注意的是,SslEnforcer 的 :except 配置也遇到了麻烦,因此我使用 :only 配置并将其设置为正则表达式,以在整个站点上强制执行 ssl,但正则表达式前瞻“feedback|beta-tester”除外(这些是我不需要 SSL 的路由)。这是我使用的配置:
config.middleware.use Rack::SslEnforcer, :only => %r{[\/](?!feedback|beta-tester)\S+}, :strict => true
Run Code Online (Sandbox Code Playgroud)
请务必将 :strict 设置为 true,否则当有人从 SSL 页面导航到您的展示页面时,它将使用 SSL,反之亦然从非 SSL 导航。
https://github.com/tobmatth/rack-ssl-enforcer
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |