为Heroku Ruby Sinatra应用程序实施HTTPS的最简单方法

时间:2014-10-31 09:45:29

标签: ruby redirect heroku https sinatra

我有一个我在Heroku上创建的应用程序,用Ruby(不是rails)和Sinatra编写。 它托管在默认的herokuapp域上,因此我可以使用HTTP和HTTPS来解决应用程序问题。 该应用程序请求我转发到HTTPS呼叫的用户凭据,以便转发部分是安全的。 我想确保我的用户始终安全地连接到我的应用,因此凭据不会以明文形式传递。

尽管进行了大量研究,但我还没有找到解决这个简单要求的方案。

是否有一个简单的解决方案,而无需将我的应用程序更改为Ruby rails或其他?

谢谢,

艾伦

2 个答案:

答案 0 :(得分:1)

在过滤器中重定向

这是未经测试的,但应该可以使用。如果没有,或者需要进一步细化,至少应该给你一个合理的起点。

before do
  redirect request.url.sub('http', 'https') unless request.secure?
end

另请参阅

答案 1 :(得分:1)

我使用的助手看起来像这样:

def https_required!
    if settings.production? && request.scheme == 'http'
        headers['Location'] = request.url.sub('http', 'https')
        halt 301, "https required\n"
    end
end

然后我可以将它添加到我想强制为https的任何一条路线上,或者在before过滤器中使用它来强制使用一组网址:

before "/admin/*" do
    https_required!
end