request.secure? to check for ssl encrypted connection

Signed-off-by: Simon Rozet <simon@rozet.name>
This commit is contained in:
Adam Wiggins 2009-08-14 14:51:58 -07:00 committed by Simon Rozet
parent 8ab1690064
commit 0f030b6d1f
2 changed files with 19 additions and 0 deletions

View File

@ -26,6 +26,10 @@ module Sinatra
rescue EOFError, Errno::ESPIPE
self.GET
end
def secure?
(@env['HTTP_X_FORWARDED_PROTO'] || @env['rack.url_scheme']) == 'https'
end
end
# The response object. See Rack::Response and Rack::ResponseHelpers for

View File

@ -15,4 +15,19 @@ class RequestTest < Test::Unit::TestCase
)
assert_equal 'bar', request.params['foo']
end
it 'is secure when the url scheme is https' do
request = Sinatra::Request.new('rack.url_scheme' => 'https')
assert request.secure?
end
it 'is not secure when the url scheme is http' do
request = Sinatra::Request.new('rack.url_scheme' => 'http')
assert !request.secure?
end
it 'respects X-Forwarded-Proto header for proxied SSL' do
request = Sinatra::Request.new('HTTP_X_FORWARDED_PROTO' => 'https')
assert request.secure?
end
end