Provides access to the request's HTTP headers from the environment.
env = { "CONTENT_TYPE" => "text/plain", "HTTP_USER_AGENT" => "curl/7.43.0" }
headers = ActionDispatch::Http::Headers.from_hash(env)
headers["Content-Type"] # => "text/plain"
headers["User-Agent"] # => "curl/7.43.0"
Also note that when headers are mapped to CGI-like variables by the Rack
server, both dashes and underscores are converted to underscores. This
ambiguity cannot be resolved at this stage anymore. Both underscores and
dashes have to be interpreted as if they were originally sent as dashes.
# GET / HTTP/1.1
# ...
# User-Agent: curl/7.43.0
# X_Custom_Header: token
headers["X_Custom_Header"] # => nil
headers["X-Custom-Header"] # => "token"
Methods
- #
-
- A
-
- E
-
- F
-
- I
-
- K
-
- M
-
Included Modules
Constants
| CGI_VARIABLES |
= |
Set.new(%W[
AUTH_TYPE
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
HTTPS
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_IDENT
REMOTE_USER
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
]).freeze |
| |
|
| HTTP_HEADER |
= |
/\A[A-Za-z0-9-]+\z/ |
| |
|
Class Public methods
Source:
show
| on GitHub
def self.from_hash(hash)
new ActionDispatch::Request.new hash
end
Instance Public methods
Returns the value for the given key mapped to @env.
Source:
show
| on GitHub
def [](key)
@req.get_header env_name(key)
end
Sets the given value for the key mapped to @env.
Source:
show
| on GitHub
def []=(key, value)
@req.set_header env_name(key), value
end
Add a value to a multivalued header like Vary or Accept-Encoding.
Source:
show
| on GitHub
def add(key, value)
@req.add_header env_name(key), value
end
Source:
show
| on GitHub
def each(&block)
@req.each_header(&block)
end
fetch(key, default = DEFAULT)
Link
Returns the value for the given key mapped to @env.
If the key is not found and an optional code block is not provided, raises
a KeyError exception.
If the code block is provided, then it will be run and its result returned.
Source:
show
| on GitHub
def fetch(key, default = DEFAULT)
@req.fetch_header(env_name(key)) do
return default unless default == DEFAULT
return yield if block_given?
raise KeyError, key
end
end
Source:
show
| on GitHub
def key?(key)
@req.has_header? env_name(key)
end
merge(headers_or_env)
Link
Returns a new Http::Headers instance containing
the contents of headers_or_env and the original instance.
Source:
show
| on GitHub
def merge(headers_or_env)
headers = @req.dup.headers
headers.merge!(headers_or_env)
headers
end
merge!(headers_or_env)
Link
Adds the contents of headers_or_env to original instance
entries; duplicate keys are overwritten with the values from
headers_or_env.
Source:
show
| on GitHub
def merge!(headers_or_env)
headers_or_env.each do |key, value|
@req.set_header env_name(key), value
end
end