класс 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_ПЕРЕМЕННЫЕ
- HTTP_ЗАГОЛОВОК
Публичные методы класса
# File actionpack/lib/action_dispatch/http/headers.rb, line 48 def self.from_hash(hash) new ActionDispatch::Request.new hash end
Публичные методы экземпляра
# File actionpack/lib/action_dispatch/http/headers.rb, line 57 def [](key) @req.get_header env_name(key) end
Возвращает значение для заданного ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 62 def []=(key, value) @req.set_header env_name(key), value end
Устанавливает заданное значение для ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 67 def add(key, value) @req.add_header env_name(key), value end
Добавляет значение к многозначному заголовку, например, Vary или Accept-Encoding.
# File actionpack/lib/action_dispatch/http/headers.rb, line 93 def each(&block) @req.each_header(&block) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 114 def env; @req.env.dup; end
# File actionpack/lib/action_dispatch/http/headers.rb, line 85
def fetch(key, default = DEFAULT)
@req.fetch_header(env_name(key)) do
return default unless default == DEFAULT
return yield if block_given?
raise NameError, key
end
end Возвращает значение для заданного ключа, сопоставленного с @env.
Если ключ не найден и необязательный блок кода не указан, выбрасывается KeyError исключение.
Если блок кода указан, он будет выполнен, и его результат будет возвращен.
# File actionpack/lib/action_dispatch/http/headers.rb, line 71 def key?(key) @req.has_header? env_name(key) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 99 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 108
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–2018 David Heinemeier Hansson
Licensed under the MIT License.