request.secure? to check for ssl encrypted connection
Signed-off-by: Simon Rozet <simon@rozet.name>
This commit is contained in:
parent
8ab1690064
commit
0f030b6d1f
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue