Expand description

HTTP cookie parsing and cookie jar management.

This crates provides the Cookie type, representing an HTTP cookie, and the CookieJar type, which manages a collection of cookies for session management, recording changes as they are made, and optional automatic cookie encryption and signing.

Usage

Add the following to the [dependencies] section of your Cargo.toml:

cookie = "0.15"

Then add the following line to your crate root:

extern crate cookie;

Features

This crate exposes several features, all of which are disabled by default:

  • percent-encode

    Enables percent encoding and decoding of names and values in cookies.

    When this feature is enabled, the [Cookie::encoded()] and [Cookie::parse_encoded()] methods are available. The encoded method returns a wrapper around a Cookie whose Display implementation percent-encodes the name and value of the cookie. The parse_encoded method percent-decodes the name and value of a Cookie during parsing.

  • signed

    Enables signed cookies via [CookieJar::signed()].

    When this feature is enabled, the [CookieJar::signed()] method, [SignedJar] type, and [Key] type are available. The jar acts as “child jar”; operations on the jar automatically sign and verify cookies as they are added and retrieved from the parent jar.

  • private

    Enables private (authenticated, encrypted) cookies via [CookieJar::private()].

    When this feature is enabled, the [CookieJar::private()] method, [PrivateJar] type, and [Key] type are available. The jar acts as “child jar”; operations on the jar automatically encrypt and decrypt/authenticate cookies as they are added and retrieved from the parent jar.

  • key-expansion

    Enables key expansion or key derivation via [Key::derive_from()].

    When this feature is enabled, and either signed or private are also enabled, the [Key::derive_from()] method is available. The method can be used to derive a Key structure appropriate for use with signed and private jars from cryptographically valid key material that is shorter in length than the full key.

  • secure

    A meta-feature that simultaneously enables signed, private, and key-expansion.

You can enable features via Cargo.toml:

[dependencies.cookie]
features = ["secure", "percent-encode"]

Structs

Representation of an HTTP cookie.

Structure that follows the builder pattern for building Cookie structs.

A collection of cookies that tracks its modifications.

Iterator over the changes to a cookie jar.

Wrapper around Cookie whose Display implementation either percent-encodes the cookie’s name and value, skips displaying the cookie’s parameters (only displaying it’s name and value), or both.

Iterator over all of the cookies in a jar.

Enums

A cookie’s expiration: either session or a date-time.

Enum corresponding to a parsing error.

The SameSite cookie attribute.