package http-cookie

  1. Overview
  2. Docs

Module Http_cookieSource

A comprehensive and standards compliant HTTP cookies library for ocaml.

HTTP cookie is serialized as follows:

  • In a Cookie header in a HTTP request
  • In a Set-Cookie header in a HTTP response.

The library supports consuming and creating HTTP cookie in both requests and responses.

The standards implemented by the library is

  1. RFC 6265 - Cookies.
  2. Section 3.3.1 - HTTP Date
  3. Domain Name
  4. Hosts
  5. IPv4/IPv6 Address
Sourcetype t

A HTTP cookie.

Sourceand date_time

normalized date time value in GMT.

Sourceand same_site = [
  1. | `None
  2. | `Lax
  3. | `Strict
]

'Same-site' cookie attribute. Same-site

Pretty Printers

Sourceval pp : Format.formatter -> t -> unit
Sourceval pp_same_site : Format.formatter -> same_site -> unit
Sourceval pp_date_time : Format.formatter -> date_time -> unit

pp_date_time fmt date_time pretty prints date_time in RFC 1123 format.

Example:

 Sun, 06 Nov 1994 08:49:37 GMT 
Sourceval pp_rfc1123 : Format.formatter -> date_time -> unit

Alias of pp_date_time.

Create/Decode/Encode

Sourceval date_time : year:int -> month: [ `Jan | `Feb | `Mar | `Apr | `May | `Jun | `Jul | `Aug | `Sep | `Oct | `Nov | `Dec ] -> weekday:[ `Sun | `Mon | `Tue | `Wed | `Thu | `Fri | `Sat ] -> day:int -> hour:int -> minutes:int -> seconds:int -> (date_time, string) result

date_time is Ok dt if all of the given parameters are valid for creating date_time value, otherwise it is Error err where err denotes the error.

Sourceval create : ?path:string -> ?domain:string -> ?expires:date_time -> ?max_age:int64 -> ?secure:bool -> ?http_only:bool -> ?same_site:same_site -> ?extension:string -> name:string -> string -> (t, string) result

create ~path ~domain ~expires ~max_age ~secure ~http_only ~same_site ~extension ~name value is Ok cookie if all of the given parameters are valid cookie attribute values. Otherwise it is Error error where error is the description of the error.

of_cookie header parses header - a string value which represents HTTP Cookie header value as defined in https://tools.ietf.org/html/rfc6265#section-4.2. It returns a list of Cookies if it is able to successfully parse s, otherwise it returns Error err.

It is an error to include duplicate cookie names.

Examples

This returns two cookies with cookie names SID and lang.

 Http_cookie.of_cookie "SID=31d4d96e407aad42; lang=en-US" 

to_cookie c serializes c into a string which can be encoded as value for HTTP Cookie header.

Example of a string returned by the function.

SID=31d4d96e407aad42

to_set_cookie c serializes cookie c into a string which can be encoded as value for HTTP Set-Cookie header.

The datetime format for expires attribute is specified in RFC 2616

Example of a string returned by the function,

SID=31d4d96e407aad42; Path=/; Secure; HttpOnly; Expires=Sun, 06 Nov 1994 08:49:37 GMT

of_set_cookie s is Ok cookie if s can be parsed successfully to create t.

s is the HTTP 'Set-Cookie' header value. The syntax for the value is defined as set-cookie-string in RFC 6265, 4.1

Cookie attributes are defined precisely at RFC 6262

Sourceval name : t -> string

name t returns a cookie name.

See cookie-name

Sourceval value : t -> string

value t returns a cookie value.

See cookie-value

Sourceval path : t -> string option

path t returns cookie path attribute.

See cookie-path

Sourceval domain : t -> string option

domain t returns cookie domain attribute.

See cookie-domain

Sourceval expires : t -> date_time option

expires t returns a coookie expires attribute.

See cookie-expires

Sourceval max_age : t -> int64 option

max_age t returns a cookie max_age attribute.

See max-age and max-age-av

Sourceval secure : t -> bool

secure t returns a secure attribute.

See cookie-secure

Sourceval http_only : t -> bool

http_only t returns a http_only attribute.

See http-only

Sourceval same_site : t -> same_site option

same_site t returns a same_site attribute.

See same-site

Sourceval extension : t -> string option

extension t returns a cookie extension value.

See cookie-extension

Compare

Sourceval compare : t -> t -> int

compare c1 c2 returns 0 if c1 and c2 are equal, a positive integer if c1 is greater than c2 and a negative integer if c1 is less than c2

Sourceval compare_date_time : date_time -> date_time -> int

Updates

Sourceval update_value : string -> t -> (t, string) result
Sourceval update_name : string -> t -> (t, string) result
Sourceval update_path : string option -> t -> (t, string) result
Sourceval update_domain : string option -> t -> (t, string) result
Sourceval update_expires : date_time option -> t -> t
Sourceval update_max_age : int64 option -> t -> (t, string) result
Sourceval update_secure : bool -> t -> t
Sourceval update_http_only : bool -> t -> t
Sourceval update_same_site : same_site option -> t -> t
Sourceval update_extension : string option -> t -> (t, string) result
OCaml

Innovation. Community. Security.