aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/http/headers.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2013-03-13 16:25:28 +0100
committerYves Senn <yves.senn@gmail.com>2013-03-13 16:41:00 +0100
commita709246d1739c44e04b00412e7a4ec09c1500fc3 (patch)
tree8501c646a7ab409762e9f924a7bef9684e201c12 /actionpack/lib/action_dispatch/http/headers.rb
parent9af59b2468e4ad6c3c2ca89f90968fdcaa417aba (diff)
downloadrails-a709246d1739c44e04b00412e7a4ec09c1500fc3.tar.gz
rails-a709246d1739c44e04b00412e7a4ec09c1500fc3.tar.bz2
rails-a709246d1739c44e04b00412e7a4ec09c1500fc3.zip
`Http::Headers` respects dotted env vars, symbols, headers with numbers.
Diffstat (limited to 'actionpack/lib/action_dispatch/http/headers.rb')
-rw-r--r--actionpack/lib/action_dispatch/http/headers.rb17
1 files changed, 6 insertions, 11 deletions
diff --git a/actionpack/lib/action_dispatch/http/headers.rb b/actionpack/lib/action_dispatch/http/headers.rb
index 3f3f71b280..1574518a16 100644
--- a/actionpack/lib/action_dispatch/http/headers.rb
+++ b/actionpack/lib/action_dispatch/http/headers.rb
@@ -1,7 +1,7 @@
module ActionDispatch
module Http
class Headers
- NON_PREFIX_VARIABLES = %w(
+ CGI_VARIABLES = %w(
CONTENT_TYPE CONTENT_LENGTH
HTTPS AUTH_TYPE GATEWAY_INTERFACE
PATH_INFO PATH_TRANSLATED QUERY_STRING
@@ -9,7 +9,7 @@ module ActionDispatch
REQUEST_METHOD SCRIPT_NAME
SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE
)
- HEADER_REGEXP = /\A[A-Za-z-]+\z/
+ HTTP_HEADER = /\A[A-Za-z0-9-]+\z/
include Enumerable
attr_reader :env
@@ -52,16 +52,11 @@ module ActionDispatch
private
def env_name(key)
- if key =~ HEADER_REGEXP
- cgi_name(key)
- else
- key
+ key = key.to_s
+ if key =~ HTTP_HEADER
+ key = key.upcase.tr('-', '_')
+ key = "HTTP_" + key unless CGI_VARIABLES.include?(key)
end
- end
-
- def cgi_name(key)
- key = key.upcase.gsub(/-/, '_')
- key = "HTTP_#{key}" unless NON_PREFIX_VARIABLES.include?(key)
key
end
end