我有一个我在Heroku上创建的应用程序,用Ruby(不是rails)和Sinatra编写。 它托管在默认的herokuapp域上,因此我可以使用HTTP和HTTPS来解决应用程序问题。 该应用程序请求我转发到HTTPS呼叫的用户凭据,以便转发部分是安全的。 我想确保我的用户始终安全地连接到我的应用,因此凭据不会以明文形式传递。
尽管进行了大量研究,但我还没有找到解决这个简单要求的方案。
是否有一个简单的解决方案,而无需将我的应用程序更改为Ruby rails或其他?
谢谢,
艾伦
答案 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