A Hash-like object that holds HTTP headers.
Two headers are considered the same if their downcase representation is the same (in which _ is the downcase version of -).
NOTE To use Headers, you must explicitly import it with require "http/headers"
Equality operator.
Adds a header with key and value to the header set.
Returns a shallow copy of this object.
Must yield this collection's elements to the block.
Returns true if self does not contain any element.
Returns if among the headers for key there is some that contains word as a value.
Appends this struct's name and instance variables names and values to the given IO.
Serializes headers according to the HTTP protocol.
Serializes headers according to the HTTP protocol.
Same as #inspect(io).
Enumerable({String, Array(String)})
Enumerable({String, Array(String)})
Struct
Struct
Value
Object
Object
Object
Equality operator.
Returns true if other is equal to self.
Keys are matched case-insensitive. String values are treated equal to an array values with the same string as single element.
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => "bar"} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"foo" => "bar"} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => ["bar"]} # => true
HTTP::Headers{"Foo" => "bar"} == HTTP::Headers{"Foo" => "baz"} # => false Adds a header with key and value to the header set. If a header with key already exists in the set, value is appended to the existing header.
require "http/headers"
headers = HTTP::Headers.new
headers.add("Connection", "keep-alive")
headers["Connection"] # => "keep-alive"
headers.add("Connection", "Upgrade")
headers["Connection"] # => "keep-alive,Upgrade" Must yield this collection's elements to the block.
Returns true if self does not contain any element.
([] of Int32).empty? # => true ([1]).empty? # => false [nil, false].empty? # => false
#present? returns the inverse.Returns if among the headers for key there is some that contains word as a value. The word is expected to match between word boundaries (i.e. non-alphanumeric chars).
require "http/headers"
headers = HTTP::Headers{"Connection" => "keep-alive, Upgrade"}
headers.includes_word?("Connection", "Upgrade") # => true Appends this struct's name and instance variables names and values to the given IO.
struct Point def initialize(@x : Int32, @y : Int32) end end p1 = Point.new 1, 2 p1.to_s # "Point(@x=1, @y=2)" p1.inspect # "Point(@x=1, @y=2)"
Serializes headers according to the HTTP protocol.
Prints a list of HTTP header fields in the format described in RFC 7230 §3.2, with each field terminated by a CRLF sequence ("\r\n").
The serialization does not include a double CRLF sequence at the end.
headers = HTTP::Headers{"foo" => "bar", "baz" => %w[qux qox]}
headers.serialize # => "foo: bar\r\nbaz: qux\r\nbaz: qox\r\n" Serializes headers according to the HTTP protocol.
Prints a list of HTTP header fields in the format described in RFC 7230 §3.2, with each field terminated by a CRLF sequence ("\r\n").
The serialization does not include a double CRLF sequence at the end.
headers = HTTP::Headers{"foo" => "bar", "baz" => %w[qux qox]}
headers.serialize # => "foo: bar\r\nbaz: qux\r\nbaz: qox\r\n" Same as #inspect(io).
© 2012–2026 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.19.0/HTTP/Headers.html