package h1

  1. Overview
  2. Docs

Header Fields

Each header field consists of a case-insensitive field name and a field value. The order in which header fields with differing field names are received is not significant. However, it is good practice to send header fields that contain control data first so that implementations can decide when not to handle a message as early as possible.

A sender MUST NOT generate multiple header fields with the same field name in a message unless either the entire field value for that header field is defined as a comma-separated list or the header field is a well-known exception, e.g., Set-Cookie.

A recipient MAY combine multiple header fields with the same field name into one "field-name: field-value" pair, without changing the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by a comma. The order in which header fields with the same field name are received is therefore significant to the interpretation of the combined field value; a proxy MUST NOT change the order of these field values when forwarding a message.

Note. Unless otherwise specified, all operations preserve header field order and all reference to equality on names is assumed to be case-insensitive.

See RFC7230§3.2 for more details.

type t
type name = string
type value = string
val ci_equal : string -> string -> bool

Case-insensitive equality for testing header names or values

val empty : t
val of_list : (name * value) list -> t
val of_rev_list : (name * value) list -> t
val to_list : t -> (name * value) list
val to_rev_list : t -> (name * value) list
val add : t -> name -> value -> t
val add_unless_exists : t -> name -> value -> t
val add_list : t -> (name * value) list -> t
val add_multi : t -> (name * value list) list -> t
val remove : t -> name -> t
val replace : t -> name -> value -> t
val mem : t -> name -> bool
val get : t -> name -> value option
val get_exn : t -> name -> value
val get_multi : t -> name -> value list
val iter : f:(name -> value -> unit) -> t -> unit
val fold : f:(name -> value -> 'a -> 'a) -> init:'a -> t -> 'a
val to_string : t -> string
val pp_hum : Format.formatter -> t -> unit
OCaml

Innovation. Community. Security.