Action Dispatch 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"
另請注意,當標頭被 Rack 伺服器映射到 CGI 類似變數時,破折號和底線都會轉換為底線。 此時已無法解決這種歧義。 底線和破折號都必須被解釋為如同它們最初是以破折號發送的一樣。
# 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 | = | 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/ |
類別公開方法
from_hash(hash) 連結
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 54 def self.from_hash(hash) new ActionDispatch::Request.new hash end
實例公開方法
[](key) 連結
返回映射到 @env 的給定鍵的值。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 63 def [](key) @req.get_header env_name(key) end
[]=(key, value) 連結
設定映射到 @env 的鍵的給定值。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 68 def []=(key, value) @req.set_header env_name(key), value end
add(key, value) 連結
將值新增到多值的標頭,例如 Vary
或 Accept-Encoding
。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 73 def add(key, value) @req.add_header env_name(key), value end
each(&block) 連結
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 98 def each(&block) @req.each_header(&block) end
env() 連結
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 118 def env; @req.env.dup; end
fetch(key, default = DEFAULT) 連結
返回映射到 @env 的給定鍵的值。
如果找不到鍵且未提供程式碼區塊,則會引發 KeyError
例外。
如果提供了程式碼區塊,則將會執行它並返回其結果。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 90 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
key?(key) 連結
也稱為:include?
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 77 def key?(key) @req.has_header? env_name(key) end
merge(headers_or_env) 連結
返回一個新的 Http::Headers
實例,其中包含 headers_or_env
和原始實例的內容。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 104 def merge(headers_or_env) headers = @req.dup.headers headers.merge!(headers_or_env) headers end
merge!(headers_or_env) 連結
將 headers_or_env
的內容新增到原始實例項目;重複的鍵將被 headers_or_env
中的值覆蓋。
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/http/headers.rb, line 112 def merge!(headers_or_env) headers_or_env.each do |key, value| @req.set_header env_name(key), value end end