класс ActionDispatch::Http::Headers
Обеспечивает доступ к HTTP-заголовкам запроса из среды.
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"
Также обратите внимание, что когда заголовки отображаются в переменные, похожие на CGI, сервер Rack преобразует тире и подчёркивания в подчёркивания. Эта неоднозначность больше не может быть разрешена на этом этапе. И подчёркивания, и тире должны интерпретироваться так, как будто они изначально были отправлены как тире.
# GET / HTTP/1.1 # ... # User-Agent: curl/7.43.0 # X_Custom_Header: token headers["X_Custom_Header"] # => nil headers["X-Custom-Header"] # => "token"
Константы
- CGI_VARIABLES
- HTTP_ЗАГОЛОВОК
Публичные методы класса
# File actionpack/lib/action_dispatch/http/headers.rb, line 50 def self.from_hash(hash) new ActionDispatch::Request.new hash end
Публичные методы экземпляра
# File actionpack/lib/action_dispatch/http/headers.rb, line 59 def [](key) @req.get_header env_name(key) end
Возвращает значение для заданного ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 64 def []=(key, value) @req.set_header env_name(key), value end
Устанавливает заданное значение для ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 69 def add(key, value) @req.add_header env_name(key), value end
Добавляет значение к заголовку с несколькими значениями, например, Vary или Accept-Encoding.
# File actionpack/lib/action_dispatch/http/headers.rb, line 95 def each(&block) @req.each_header(&block) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 116 def env; @req.env.dup; end
# File actionpack/lib/action_dispatch/http/headers.rb, line 87
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 Возвращает значение для заданного ключа, сопоставленного с @env.
Если ключ не найден и необязательный код-блок не предоставлен, возникает исключение KeyError.
Если код-блок предоставлен, то он будет выполнен, и его результат возвращён.
# File actionpack/lib/action_dispatch/http/headers.rb, line 73 def key?(key) @req.has_header? env_name(key) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 101 def merge(headers_or_env) headers = @req.dup.headers headers.merge!(headers_or_env) headers end
Возвращает новый экземпляр Http::Headers, содержащий содержимое headers_or_env и исходный экземпляр.
# File actionpack/lib/action_dispatch/http/headers.rb, line 110
def merge!(headers_or_env)
headers_or_env.each do |key, value|
@req.set_header env_name(key), value
end
end Добавляет содержимое headers_or_env к записям исходного экземпляра; дублирующиеся ключи перезаписываются значениями из headers_or_env.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.