diff options
author | Martin Ottenwaelter <martin.ottenwaelter@gmail.com> | 2010-11-02 21:34:25 +0800 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2010-11-02 21:59:09 +0800 |
commit | 85ca454e6143a3081d90e4546ccad602a4c3ad2e (patch) | |
tree | d195547f33795ceb94b6974320225818fc8a1ffd | |
parent | 3e4833b55d253b7877c078adf59f394e09ec6e99 (diff) | |
download | rack-85ca454e6143a3081d90e4546ccad602a4c3ad2e.tar.gz |
HTTP_X_FORWARDED_PROTO can be a list of chained values, eg 'https, http, http'
-rw-r--r-- | lib/rack/request.rb | 2 | ||||
-rw-r--r-- | test/spec_request.rb | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 9f8adfd7..b44b7c8a 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -66,7 +66,7 @@ module Rack if @env['HTTPS'] == 'on' 'https' elsif @env['HTTP_X_FORWARDED_PROTO'] - @env['HTTP_X_FORWARDED_PROTO'] + @env['HTTP_X_FORWARDED_PROTO'].split(',')[0] else @env["rack.url_scheme"] end diff --git a/test/spec_request.rb b/test/spec_request.rb index 418463e0..3e0a2f2d 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -253,6 +253,10 @@ describe Rack::Request do request = Rack::Request.new(Rack::MockRequest.env_for("/", 'HTTP_X_FORWARDED_PROTO' => 'https')) request.scheme.should.equal "https" request.should.be.ssl? + + request = Rack::Request.new(Rack::MockRequest.env_for("/", 'HTTP_X_FORWARDED_PROTO' => 'https, http, http')) + request.scheme.should.equal "https" + request.should.be.ssl end should "parse cookies" do |