<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="pre5378Trust200902" docName="draft-ietf-httpbis-rfc6265bis-18" category="std" consensus="true" submissionType="IETF" obsoletes="6265" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title>Cookies: HTTP State Management Mechanism</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-18"/>
    <author initials="S." surname="Bingler" fullname="Steven Bingler" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>bingler@google.com</email>
      </address>
    </author>
    <author initials="M." surname="West" fullname="Mike West" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>mkwst@google.com</email>
        <uri>https://mikewest.org/</uri>
      </address>
    </author>
    <author initials="J." surname="Wilander" fullname="John Wilander" role="editor">
      <organization>Apple, Inc</organization>
      <address>
        <email>wilander@apple.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <abstract>
      <?line 192?>

<t>This document defines the HTTP Cookie and Set-Cookie header fields. These
header fields can be used by HTTP servers to store state (called cookies) at
HTTP user agents, letting the servers maintain a stateful session over the
mostly stateless HTTP protocol. Although cookies have many historical
infelicities that degrade their security and privacy, the Cookie and Set-Cookie
header fields are widely used on the Internet. This document obsoletes RFC
6265.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpbis-rfc6265bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/6265bis"/>.</t>
    </note>
  </front>
  <middle>
    <?line 202?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines the HTTP Cookie and Set-Cookie header fields. Using
the Set-Cookie header field, an HTTP server can pass name/value pairs and
associated metadata (called cookies) to a user agent. When the user agent makes
subsequent requests to the server, the user agent uses the metadata and other
information to determine whether to return the name/value pairs in the Cookie
header field.</t>
      <t>Although simple on their surface, cookies have a number of complexities. For
example, the server indicates a scope for each cookie when sending it to the
user agent. The scope indicates the maximum amount of time in which the user
agent should return the cookie, the servers to which the user agent should
return the cookie, and the connection types for which the cookie is applicable.</t>
      <t>For historical reasons, cookies contain a number of security and privacy
infelicities. For example, a server can indicate that a given cookie is
intended for "secure" connections, but the Secure attribute does not provide
integrity in the presence of an active network attacker. Similarly, cookies
for a given host are shared across all the ports on that host, even though the
usual "same-origin policy" used by web browsers isolates content retrieved via
different ports.</t>
      <t>This specification applies to developers of both cookie-producing servers and
cookie-consuming user agents. <xref target="implementation-advisory"/> helps to clarify the
intended target audience for each implementation type.</t>
      <t>To maximize interoperability with user agents, servers SHOULD limit themselves
to the well-behaved profile defined in <xref target="sane-profile"/> when generating cookies.</t>
      <t>User agents MUST implement the more liberal processing rules defined in <xref target="ua-requirements"/>,
in order to maximize interoperability with existing servers that do not
conform to the well-behaved profile defined in <xref target="sane-profile"/>.</t>
      <t>This document specifies the syntax and semantics of these header fields as they are
actually used on the Internet. In particular, this document does not create
new syntax or semantics beyond those in use today. The recommendations for
cookie generation provided in <xref target="sane-profile"/> represent a preferred subset of current
server behavior, and even the more liberal cookie processing algorithm provided
in <xref target="ua-requirements"/> does not recommend all of the syntactic and semantic variations in
use today. Where some existing software differs from the recommended protocol
in significant ways, the document contains a note explaining the difference.</t>
      <t>This document obsoletes <xref target="RFC6265"/>.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <section anchor="conformance-criteria">
        <name>Conformance Criteria</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in <xref target="RFC2119"/>.</t>
        <t>Requirements phrased in the imperative as part of algorithms (such as "strip any
leading space characters" or "return false and abort these steps") are to be
interpreted with the meaning of the key word ("MUST", "SHOULD", "MAY", etc.)
used in introducing the algorithm.</t>
        <t>Conformance requirements phrased as algorithms or specific steps can be
implemented in any manner, so long as the end result is equivalent. In
particular, the algorithms defined in this specification are intended to be
easy to understand and are not intended to be performant.</t>
      </section>
      <section anchor="syntax-notation">
        <name>Syntax Notation</name>
        <t>This specification uses the Augmented Backus-Naur Form (ABNF) notation of
<xref target="RFC5234"/>.</t>
        <t>The following core rules are included by reference, as defined in <xref target="RFC5234"/>,
Appendix B.1: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTLs
(controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
(hexadecimal 0-9/A-F/a-f), LF (line feed), NUL (null octet), OCTET (any
8-bit sequence of data except NUL), SP (space), HTAB (horizontal tab),
CHAR (any <xref target="USASCII"/> character), VCHAR (any visible <xref target="USASCII"/> character),
and WSP (whitespace).</t>
        <t>The OWS (optional whitespace) and BWS (bad whitespace) rules are defined in
<xref section="5.6.3" sectionFormat="of" target="RFC9110"/>.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The terms "user agent", "client", "server", "proxy", and "origin server" have
the same meaning as in the HTTP/1.1 specification (<xref target="RFC9110"/>, Section 3).</t>
        <t>The request-host is the name of the host, as known by the user agent, to which
the user agent is sending an HTTP request or from which it is receiving an HTTP
response (i.e., the name of the host to which it sent the corresponding HTTP
request).</t>
        <t>The term request-uri refers to "target URI" as defined in <xref section="7.1" sectionFormat="of" target="RFC9110"/>.</t>
        <t>Two sequences of octets are said to case-insensitively match each other if and
only if they are equivalent under the i;ascii-casemap collation defined in
<xref target="RFC4790"/>.</t>
        <t>The term string means a sequence of non-NUL octets.</t>
        <t>The terms "active browsing context", "active document", "ancestor navigables",
"container document", "content navigable", "dedicated worker", "Document",
"inclusive ancestor navigables", "navigable", "opaque origin", "sandboxed
origin browsing context flag", "shared worker", "the worker's Documents",
"top-level traversable", and "WorkerGlobalScope" are defined in <xref target="HTML"/>.</t>
        <t>"Service Workers" are defined in the Service Workers specification
<xref target="SERVICE-WORKERS"/>.</t>
        <t>The term "origin", the mechanism of deriving an origin from a URI, and the "the
same" matching algorithm for origins are defined in <xref target="RFC6454"/>.</t>
        <t>"Safe" HTTP methods include <tt>GET</tt>, <tt>HEAD</tt>, <tt>OPTIONS</tt>, and <tt>TRACE</tt>, as defined
in <xref section="9.2.1" sectionFormat="of" target="RFC9110"/>.</t>
        <t>A domain's "public suffix" is the portion of a domain that is controlled by a
public registry, such as "com", "co.uk", and "pvt.k12.wy.us". A domain's
"registrable domain" is the domain's public suffix plus the label to its left.
That is, for <tt>https://www.site.example</tt>, the public suffix is <tt>example</tt>, and the
registrable domain is <tt>site.example</tt>. Whenever possible, user agents SHOULD
use an up-to-date public suffix list, such as the one maintained by the Mozilla
project at <xref target="PSL"/>.</t>
        <t>The term "request", as well as a request's "client", "current url", "method",
"target browsing context", and "url list", are defined in <xref target="FETCH"/>.</t>
        <t>The term "non-HTTP APIs" refers to non-HTTP mechanisms used to set and retrieve
cookies, such as a web browser API that exposes cookies to scripts.</t>
        <t>The term "top-level navigation" refers to a navigation of a top-level
traversable.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>This section outlines a way for an origin server to send state information to a
user agent and for the user agent to return the state information to the origin
server.</t>
      <t>To store state, the origin server includes a Set-Cookie header field in an HTTP
response. In subsequent requests, the user agent returns a Cookie request
header field to the origin server. The Cookie header field contains cookies the user agent
received in previous Set-Cookie header fields. The origin server is free to ignore
the Cookie header field or use its contents for an application-defined purpose.</t>
      <t>Origin servers MAY send a Set-Cookie response header field with any response. An
origin server can include multiple Set-Cookie header fields in a single response.
The presence of a Cookie or a Set-Cookie header field does not preclude HTTP
caches from storing and reusing a response.</t>
      <t>Origin servers SHOULD NOT fold multiple Set-Cookie header fields into a single
header field. The usual mechanism for folding HTTP headers fields (i.e., as
defined in <xref section="5.3" sectionFormat="of" target="RFC9110"/>) might change the semantics of the Set-Cookie header
field because the %x2C (",") character is used by Set-Cookie in a way that
conflicts with such folding.</t>
      <t>User agents MAY ignore Set-Cookie header fields based on response status codes or
the user agent's cookie policy (see <xref target="ignoring-cookies"/>).</t>
      <section anchor="examples">
        <name>Examples</name>
        <t>Using the Set-Cookie header field, a server can send the user agent a short string
in an HTTP response that the user agent will return in future HTTP requests that
are within the scope of the cookie. For example, the server can send the user
agent a "session identifier" named SID with the value 31d4d96e407aad42. The
user agent then returns the session identifier in subsequent requests.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></sourcecode>
        <t>The server can alter the default scope of the cookie using the Path and
Domain attributes. For example, the server can instruct the user agent to
return the cookie to every path and every subdomain of site.example.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42; Path=/; Domain=site.example

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></sourcecode>
        <t>As shown in the next example, the server can store multiple cookies at the user
agent. For example, the server can store a session identifier as well as the
user's preferred language by returning two Set-Cookie header fields. Notice
that the server uses the Secure and HttpOnly attributes to provide
additional security protections for the more sensitive session identifier (see
<xref target="sane-set-cookie-semantics"/>).</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42; Path=/; Secure; HttpOnly
Set-Cookie: lang=en-US; Path=/; Domain=site.example

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42; lang=en-US
]]></sourcecode>
        <t>Notice that the Cookie header field above contains two cookies, one named SID and
one named lang.</t>
        <t>Cookie names are case-sensitive, meaning that if a server sends the user agent
two Set-Cookie header fields that differ only in their name's case the user
agent will store and return both of those cookies in subsequent requests.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42
Set-Cookie: sid=31d4d96e407aad42

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42; sid=31d4d96e407aad42
]]></sourcecode>
        <t>If the server wishes the user agent to persist the cookie over
multiple "sessions" (e.g., user agent restarts), the server can specify an
expiration date in the Expires attribute. Note that the user agent might
delete the cookie before the expiration date if the user agent's cookie store
exceeds its quota or if the user manually deletes the server's cookie.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: lang=en-US; Expires=Wed, 09 Jun 2021 10:18:14 GMT

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42; lang=en-US
]]></sourcecode>
        <t>Finally, to remove a cookie, the server returns a Set-Cookie header field with an
expiration date in the past. The server will be successful in removing the
cookie only if the Path and the Domain attribute in the Set-Cookie header field
match the values used when the cookie was created.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: lang=; Expires=Sun, 06 Nov 1994 08:49:37 GMT

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></sourcecode>
      </section>
      <section anchor="implementation-advisory">
        <name>Which Requirements to Implement</name>
        <t>The upcoming two sections, <xref target="sane-profile"/> and <xref target="ua-requirements"/>, discuss
the set of requirements for two distinct types of implementations. This section
is meant to help guide implementers in determining which set of requirements
best fits their goals. Choosing the wrong set of requirements could result in a
lack of compatibility with other cookie implementations.</t>
        <t>It's important to note that being compatible means different things
depending on the implementer's goals. These differences have built up over time
due to both intentional and unintentional spec changes, spec interpretations,
and historical implementation differences.</t>
        <t>This section roughly divides implementers of the cookie spec into two types,
producers and consumers. These are not official terms and are only used here to
help readers develop an intuitive understanding of the use cases.</t>
        <section anchor="cookie-producing-implementations">
          <name>Cookie Producing Implementations</name>
          <t>An implementer should choose <xref target="sane-profile"/> whenever cookies are created and
will be sent to a user agent, such as a web browser. These implementations are
frequently referred to as servers by the spec but that term includes anything
which primarily produces cookies. Some potential examples:</t>
          <ul spacing="normal">
            <li>
              <t>Server applications hosting a website or API</t>
            </li>
            <li>
              <t>Programming languages or software frameworks that support cookies</t>
            </li>
            <li>
              <t>Integrated third-party web applications, such as a business management suite</t>
            </li>
          </ul>
          <t>All these benefit from not only supporting as many user agents as possible but
also supporting other servers. This is useful if a cookie is produced by a
software framework and is later sent back to a server application which needs
to read it. <xref target="sane-profile"/> advises best practices that help maximize this
sense of compatibility.</t>
          <t>See <xref target="languages-frameworks"/> for more details on programming languages and software
frameworks.</t>
        </section>
        <section anchor="cookie-consuming-implementations">
          <name>Cookie Consuming Implementations</name>
          <t>An implementer should choose <xref target="ua-requirements"/> whenever cookies are primarily
received from another source. These implementations are referred to as user
agents. Some examples:</t>
          <ul spacing="normal">
            <li>
              <t>Web browsers</t>
            </li>
            <li>
              <t>Tools that support stateful HTTP</t>
            </li>
            <li>
              <t>Programming languages or software frameworks that support cookies</t>
            </li>
          </ul>
          <t>Because user agents don't know which servers a user will access, and whether
or not that server is following best practices, users agents are advised to
implement a more lenient set of requirements and to accept some things that
servers are warned against producing. <xref target="ua-requirements"/> advises best
practices that help maximize this sense of compatibility.</t>
          <t>See <xref target="languages-frameworks"/> for more details on programming languages and software
frameworks.</t>
          <section anchor="languages-frameworks">
            <name>Programming Languages &amp; Software Frameworks</name>
            <t>A programming language or software framework with support for cookies could
reasonably be used to create an application that acts as a cookie producer,
cookie consumer, or both. Because a developer may want to maximize their
compatibility as either a producer or consumer, these languages or frameworks
should strongly consider supporting both sets of requirements, <xref target="sane-profile"/>
and <xref target="ua-requirements"/>, behind a compatibility mode toggle. This toggle should
default to <xref target="sane-profile"/>'s requirements.</t>
            <t>Doing so will reduce the chances that a developer's application can
inadvertently create cookies that cannot be read by other servers.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sane-profile">
      <name>Server Requirements</name>
      <t>This section describes the syntax and semantics of a well-behaved profile of the
Cookie and Set-Cookie header fields.</t>
      <section anchor="sane-set-cookie">
        <name>Set-Cookie</name>
        <t>The Set-Cookie HTTP response header field is used to send cookies from the server to
the user agent.</t>
        <section anchor="abnf-syntax">
          <name>Syntax</name>
          <t>Informally, the Set-Cookie response header field contains a cookie, which begins with a
name-value-pair, followed by zero or more attribute-value pairs. Servers
SHOULD NOT send Set-Cookie header fields that fail to conform to the following
grammar:</t>
          <sourcecode type="abnf"><![CDATA[
set-cookie        = set-cookie-string
set-cookie-string = BWS cookie-pair *( BWS ";" OWS cookie-av )
cookie-pair       = cookie-name BWS "=" BWS cookie-value
cookie-name       = token
cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                      ; US-ASCII characters excluding CTLs,
                      ; whitespace, DQUOTE, comma, semicolon,
                      ; and backslash
token             = <token, defined in [HTTP], Section 5.6.2>

cookie-av         = expires-av / max-age-av / domain-av /
                    path-av / secure-av / httponly-av /
                    samesite-av / extension-av
expires-av        = "Expires" BWS "=" BWS sane-cookie-date
sane-cookie-date  =
    <IMF-fixdate, defined in [HTTP], Section 5.6.7>
max-age-av        = "Max-Age" BWS "=" BWS non-zero-digit *DIGIT
non-zero-digit    = %x31-39
                      ; digits 1 through 9
domain-av         = "Domain" BWS "=" BWS domain-value
domain-value      = <subdomain>
                      ; see details below
path-av           = "Path" BWS "=" BWS path-value
path-value        = *av-octet
secure-av         = "Secure"
httponly-av       = "HttpOnly"
samesite-av       = "SameSite" BWS "=" BWS samesite-value
samesite-value    = "Strict" / "Lax" / "None"
extension-av      = *av-octet
av-octet          = %x20-3A / %x3C-7E
                      ; any CHAR except CTLs or ";"
]]></sourcecode>
          <t>Note that some of the grammatical terms above reference documents that use
different grammatical notations than this document (which uses ABNF from
<xref target="RFC5234"/>).</t>
          <t>Per the grammar above, servers SHOULD NOT produce nameless cookies (i.e.: an
empty cookie-name) as such cookies may be unpredictably serialized by UAs when
sent back to the server.</t>
          <t>The semantics of the cookie-value are not defined by this document.</t>
          <t>To maximize compatibility with user agents, servers that wish to store arbitrary
data in a cookie-value SHOULD encode that data, for example, using Base64
<xref target="RFC4648"/>.</t>
          <t>Per the grammar above, the cookie-value MAY be wrapped in DQUOTE characters.
Note that in this case, the initial and trailing DQUOTE characters are not
stripped. They are part of the cookie-value, and will be included in Cookie
header fields sent to the server.</t>
          <t>The domain-value is a subdomain as defined by <xref target="RFC1034"/>, Section 3.5, and
as enhanced by <xref target="RFC1123"/>, Section 2.1. Thus, domain-value is a string of
<xref target="USASCII"/> characters, such as an "A-label" as defined in
<xref section="2.3.2.1" sectionFormat="of" target="RFC5890"/>.</t>
          <t>The portions of the set-cookie-string produced by the cookie-av term are
known as attributes. To maximize compatibility with user agents, servers SHOULD
NOT produce two attributes with the same name in the same set-cookie-string.
(See <xref target="storage-model"/> for how user agents handle this case.)</t>
          <t>NOTE: The name of an attribute-value pair is not case sensitive. So while they
are presented here in CamelCase, such as "HttpOnly" or "SameSite", any case is
accepted. E.x.: "httponly", "Httponly", "hTTPoNLY", etc.</t>
          <t>Servers SHOULD NOT include more than one Set-Cookie header field in the same
response with the same cookie-name. (See <xref target="set-cookie"/> for how user agents
handle this case.)</t>
          <t>If a server sends multiple responses containing Set-Cookie header fields
concurrently to the user agent (e.g., when communicating with the user agent
over multiple sockets), these responses create a "race condition" that can lead
to unpredictable behavior.</t>
          <t>NOTE: Some existing user agents differ in their interpretation of two-digit
years. To avoid compatibility issues, servers SHOULD use the rfc1123-date
format, which requires a four-digit year.</t>
          <t>NOTE: Some user agents store and process dates in cookies as 32-bit UNIX time_t
values. Implementation bugs in the libraries supporting time_t processing on
some systems might cause such user agents to process dates after the year 2038
incorrectly.</t>
        </section>
        <section anchor="sane-set-cookie-semantics">
          <name>Semantics (Non-Normative)</name>
          <t>This section describes simplified semantics of the Set-Cookie header field. These
semantics are detailed enough to be useful for understanding the most common
uses of cookies by servers. The full semantics are described in <xref target="ua-requirements"/>.</t>
          <t>When the user agent receives a Set-Cookie header field, the user agent stores the
cookie together with its attributes. Subsequently, when the user agent makes
an HTTP request, the user agent includes the applicable, non-expired cookies
in the Cookie header field.</t>
          <t>If the user agent receives a new cookie with the same cookie-name,
domain-value, and path-value as a cookie that it has already stored, the
existing cookie is evicted and replaced with the new cookie. Notice that
servers can delete cookies by sending the user agent a new cookie with an
Expires attribute with a value in the past.</t>
          <t>Unless the cookie's attributes indicate otherwise, the cookie is returned only
to the origin server (and not, for example, to any subdomains), and it expires
at the end of the current session (as defined by the user agent). User agents
ignore unrecognized cookie attributes (but not the entire cookie).</t>
          <section anchor="attribute-expires">
            <name>The Expires Attribute</name>
            <t>The Expires attribute indicates the maximum lifetime of the cookie,
represented as the date and time at which the cookie expires. The user agent
may adjust the specified date and is not required to retain the cookie until
that date has passed. In fact, user agents often evict cookies due to memory
pressure or privacy concerns.</t>
          </section>
          <section anchor="attribute-max-age">
            <name>The Max-Age Attribute</name>
            <t>The Max-Age attribute indicates the maximum lifetime of the cookie,
represented as the number of seconds until the cookie expires. The user agent
may adjust the specified duration and is not required to retain the cookie for
that duration. In fact, user agents often evict cookies due to memory pressure
or privacy concerns.</t>
            <t>NOTE: Some existing user agents do not support the Max-Age attribute. User
agents that do not support the Max-Age attribute ignore the attribute.</t>
            <t>If a cookie has both the Max-Age and the Expires attribute, the Max-Age
attribute has precedence and controls the expiration date of the cookie. If a
cookie has neither the Max-Age nor the Expires attribute, the user agent
will retain the cookie until "the current session is over" (as defined by the
user agent).</t>
          </section>
          <section anchor="attribute-domain">
            <name>The Domain Attribute</name>
            <t>The Domain attribute specifies those hosts to which the cookie will be sent.
For example, if the value of the Domain attribute is "site.example", the user
agent will include the cookie in the Cookie header field when making HTTP requests to
site.example, www.site.example, and www.corp.site.example. (Note that a
leading %x2E ("."), if present, is ignored even though that character is not
permitted.)  If the server omits the Domain attribute, the user agent
will return the cookie only to the origin server.</t>
            <t>WARNING: Some existing user agents treat an absent Domain attribute as if the
Domain attribute were present and contained the current host name. For
example, if site.example returns a Set-Cookie header field without a Domain
attribute, these user agents will erroneously send the cookie to
www.site.example as well.</t>
            <t>The user agent will reject cookies unless the Domain attribute specifies a
scope for the cookie that would include the origin server. For example, the
user agent will accept a cookie with a Domain attribute of "site.example" or
of "foo.site.example" from foo.site.example, but the user agent will not accept
a cookie with a Domain attribute of "bar.site.example" or of
"baz.foo.site.example".</t>
            <t>NOTE: For security reasons, many user agents are configured to reject Domain
attributes that correspond to "public suffixes". For example, some user
agents will reject Domain attributes of "com" or "co.uk". (See <xref target="storage-model"/> for
more information.)</t>
          </section>
          <section anchor="attribute-path">
            <name>The Path Attribute</name>
            <t>The scope of each cookie is limited to a set of paths, controlled by the
Path attribute. If the server omits the Path attribute, the user agent will
use the "directory" of the request-uri's path component as the default value.
(See <xref target="cookie-path"/> for more details.)</t>
            <t>The user agent will include the cookie in an HTTP request only if the path
portion of the request-uri matches (or is a subdirectory of) the cookie's
Path attribute, where the %x2F ("/") character is interpreted as a directory
separator.</t>
            <t>Although seemingly useful for isolating cookies between different paths within
a given host, the Path attribute cannot be relied upon for security (see
<xref target="security-considerations"/>).</t>
          </section>
          <section anchor="attribute-secure">
            <name>The Secure Attribute</name>
            <t>The Secure attribute limits the scope of the cookie to "secure" channels
(where "secure" is defined by the user agent). When a cookie has the Secure
attribute, the user agent will include the cookie in an HTTP request only if
the request is transmitted over a secure channel (typically HTTP over Transport
Layer Security (TLS) <xref target="RFC9110"/>).</t>
          </section>
          <section anchor="attribute-httponly">
            <name>The HttpOnly Attribute</name>
            <t>The HttpOnly attribute limits the scope of the cookie to HTTP requests. In
particular, the attribute instructs the user agent to omit the cookie when
providing access to cookies via non-HTTP APIs.</t>
            <t>Note that the HttpOnly attribute is independent of the Secure attribute: a
cookie can have both the HttpOnly and the Secure attribute.</t>
          </section>
          <section anchor="attribute-samesite">
            <name>The SameSite Attribute</name>
            <t>The "SameSite" attribute limits the scope of the cookie such that it will only
be attached to requests if those requests are same-site, as defined by the
algorithm in <xref target="same-site-requests"/>. For example, requests for
<tt>https://site.example/sekrit-image</tt> will attach same-site cookies if and only if
initiated from a context whose "site for cookies" is an origin with a scheme and
registered domain of "https" and "site.example" respectively.</t>
            <t>If the "SameSite" attribute's value is "Strict", the cookie will only be sent
along with "same-site" requests. If the value is "Lax", the cookie will be sent
with same-site requests, and with "cross-site" top-level navigations, as
described in <xref target="strict-lax"/>. If the value is "None", the cookie will be sent
with same-site and cross-site requests. If the "SameSite" attribute's value is
something other than these three known keywords, the attribute's value will be
subject to a default enforcement mode that is equivalent to "Lax". If a user
agent uses "Lax-allowing-unsafe" enforcement (See <xref target="lax-allowing-unsafe"/>) then
this default enforcement mode will instead be equivalent to "Lax-allowing-unsafe".</t>
            <t>The "SameSite" attribute affects cookie creation as well as delivery. Cookies
which assert "SameSite=Lax" or "SameSite=Strict" cannot be set in responses to
cross-site subresource requests, or cross-site nested navigations. They can be
set along with any top-level navigation, cross-site or otherwise.</t>
          </section>
        </section>
        <section anchor="server-name-prefixes">
          <name>Cookie Name Prefixes</name>
          <t><xref target="weak-confidentiality"/> and <xref target="weak-integrity"/> of this document spell out some of the drawbacks of cookies'
historical implementation. In particular, it is impossible for a server to have
confidence that a given cookie was set with a particular set of attributes. In
order to provide such confidence in a backwards-compatible way, two common sets
of requirements can be inferred from the first few characters of the cookie's
name.</t>
          <t>The user agent requirements for the prefixes described below are detailed in
<xref target="ua-name-prefixes"/>.</t>
          <t>To maximize compatibility with user agents servers SHOULD use prefixes as
described below.</t>
          <section anchor="the-secure-prefix">
            <name>The "__Secure-" Prefix</name>
            <t>If a cookie's name begins with a case-sensitive match for the string
<tt>__Secure-</tt>, then the cookie will have been set with a <tt>Secure</tt> attribute.</t>
            <t>For example, the following <tt>Set-Cookie</tt> header field would be rejected by a conformant
user agent, as it does not have a <tt>Secure</tt> attribute.</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example
]]></sourcecode>
            <t>Whereas the following <tt>Set-Cookie</tt> header field would be accepted if set from a secure origin
(e.g. "https://site.example/"), and rejected otherwise:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example; Secure
]]></sourcecode>
          </section>
          <section anchor="the-host-prefix">
            <name>The "__Host-" Prefix</name>
            <t>If a cookie's name begins with a case-sensitive match for the string
<tt>__Host-</tt>, then the cookie will have been set with a <tt>Secure</tt> attribute, a
<tt>Path</tt> attribute with a value of <tt>/</tt>, and no <tt>Domain</tt> attribute.</t>
            <t>This combination yields a cookie that hews as closely as a cookie can to
treating the origin as a security boundary. The lack of a <tt>Domain</tt> attribute
ensures that the cookie's <tt>host-only-flag</tt> is true, locking the cookie to a
particular host, rather than allowing it to span subdomains. Setting the <tt>Path</tt>
to <tt>/</tt> means that the cookie is effective for the entire host, and won't be
overridden for specific paths. The <tt>Secure</tt> attribute ensures that the cookie
is unaltered by non-secure origins, and won't span protocols.</t>
            <t>Ports are the only piece of the origin model that <tt>__Host-</tt> cookies continue
to ignore.</t>
            <t>For example, the following cookies would always be rejected:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Host-SID=12345
Set-Cookie: __Host-SID=12345; Secure
Set-Cookie: __Host-SID=12345; Domain=site.example
Set-Cookie: __Host-SID=12345; Domain=site.example; Path=/
Set-Cookie: __Host-SID=12345; Secure; Domain=site.example; Path=/
]]></sourcecode>
            <t>While the following would be accepted if set from a secure origin (e.g.
"https://site.example/"), and rejected otherwise:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Host-SID=12345; Secure; Path=/
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sane-cookie">
        <name>Cookie</name>
        <section anchor="server-syntax">
          <name>Syntax</name>
          <t>The user agent sends stored cookies to the origin server in the Cookie header field.
If the server conforms to the requirements in <xref target="sane-set-cookie"/> (and the user agent
conforms to the requirements in <xref target="ua-requirements"/>), the user agent will send a Cookie
header field that conforms to the following grammar:</t>
          <sourcecode type="abnf"><![CDATA[
cookie        = cookie-string
cookie-string = cookie-pair *( ";" SP cookie-pair )
]]></sourcecode>
          <t>While <xref section="5.4" sectionFormat="of" target="RFC9110"/> does not define a length limit for header
fields it is likely that the web server's implementation does impose a limit;
many popular implementations have default limits of 8K. Servers SHOULD avoid
setting a large number of large cookies such that the final cookie-string
would exceed their header field limit. Not doing so could result in requests
to the server failing.</t>
          <t>Servers MUST be tolerant of multiple cookie headers. For example, an HTTP/2
<xref target="RFC9113"/> or HTTP/3 <xref target="RFC9114"/> client or intermediary might split a cookie
header to improve compression. Servers are free to determine what form this
tolerance takes. For example, the server could process each cookie header
individually or the server could concatenate all the cookie headers into one
and then process that final, single, header. The server should be mindful of
any header field limits when deciding which approach to take.</t>
          <t>Note: Since intermediaries can modify cookie headers they should also be
mindful of common server header field limits in order to avoid sending servers
headers that they cannot process. For example, concatenating multiple cookie
headers into a single header might exceed a server's size limit.</t>
        </section>
        <section anchor="semantics">
          <name>Semantics</name>
          <t>Each cookie-pair represents a cookie stored by the user agent. The
cookie-pair contains the cookie-name and cookie-value the user agent
received in the Set-Cookie header field.</t>
          <t>Notice that the cookie attributes are not returned. In particular, the server
cannot determine from the Cookie  field alone when a cookie will expire, for
which hosts the cookie is valid, for which paths the cookie is valid, or
whether the cookie was set with the Secure or HttpOnly attributes.</t>
          <t>The semantics of individual cookies in the Cookie header field are not defined by
this document. Servers are expected to imbue these cookies with
application-specific semantics.</t>
          <t>Although cookies are serialized linearly in the Cookie header field, servers SHOULD
NOT rely upon the serialization order. In particular, if the Cookie header field
contains two cookies with the same name (e.g., that were set with different
Path or Domain attributes), servers SHOULD NOT rely upon the order in which
these cookies appear in the header field.</t>
        </section>
      </section>
    </section>
    <section anchor="ua-requirements">
      <name>User Agent Requirements</name>
      <t>This section specifies the Cookie and Set-Cookie header fields in sufficient
detail that a user agent implementing these requirements precisely can
interoperate with existing servers (even those that do not conform to the
well-behaved profile described in <xref target="sane-profile"/>).</t>
      <t>A user agent could enforce more restrictions than those specified herein (e.g.,
restrictions specified by its cookie policy, described in <xref target="cookie-policy"/>).
However, such additional restrictions may reduce the likelihood that a user
agent will be able to interoperate with existing servers.</t>
      <section anchor="subcomponent-algorithms">
        <name>Subcomponent Algorithms</name>
        <t>This section defines some algorithms used by user agents to process specific
subcomponents of the Cookie and Set-Cookie header fields.</t>
        <section anchor="cookie-date">
          <name>Dates</name>
          <t>The user agent MUST use an algorithm equivalent to the following algorithm to
parse a cookie-date. Note that the various boolean flags defined as a part
of the algorithm (i.e., found-time, found-day-of-month, found-month,
found-year) are initially "not set".</t>
          <ol spacing="normal" type="1"><li>
              <t>Using the grammar below, divide the cookie-date into date-tokens.  </t>
              <sourcecode type="abnf"><![CDATA[
cookie-date     = *delimiter date-token-list *delimiter
date-token-list = date-token *( 1*delimiter date-token )
date-token      = 1*non-delimiter

delimiter       = %x09 / %x20-2F / %x3B-40 / %x5B-60 / %x7B-7E
non-delimiter   = %x00-08 / %x0A-1F / DIGIT / ":" / ALPHA
                  / %x7F-FF
non-digit       = %x00-2F / %x3A-FF

day-of-month    = 1*2DIGIT [ non-digit *OCTET ]
month           = ( "jan" / "feb" / "mar" / "apr" /
                    "may" / "jun" / "jul" / "aug" /
                    "sep" / "oct" / "nov" / "dec" ) *OCTET
year            = 2*4DIGIT [ non-digit *OCTET ]
time            = hms-time [ non-digit *OCTET ]
hms-time        = time-field ":" time-field ":" time-field
time-field      = 1*2DIGIT
]]></sourcecode>
            </li>
            <li>
              <t>Process each date-token sequentially in the order the date-tokens
appear in the cookie-date:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>If the found-time flag is not set and the token matches the
 time production, set the found-time flag and set the hour-value,
 minute-value, and second-value to the numbers denoted by the digits
 in the date-token, respectively. Skip the remaining sub-steps and
 continue to the next date-token.</t>
                </li>
                <li>
                  <t>If the found-day-of-month flag is not set and the date-token matches
 the day-of-month production, set the found-day-of-month flag and set
 the day-of-month-value to the number denoted by the date-token. Skip
 the remaining sub-steps and continue to the next date-token.</t>
                </li>
                <li>
                  <t>If the found-month flag is not set and the date-token matches the
 month production, set the found-month flag and set the month-value
 to the month denoted by the date-token. Skip the remaining sub-steps
 and continue to the next date-token.</t>
                </li>
                <li>
                  <t>If the found-year flag is not set and the date-token matches the
 year production, set the found-year flag and set the year-value to
 the number denoted by the date-token. Skip the remaining sub-steps
 and continue to the next date-token.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>If the year-value is greater than or equal to 70 and less than or equal to
99, increment the year-value by 1900.</t>
            </li>
            <li>
              <t>If the year-value is greater than or equal to 0 and less than or equal to
69, increment the year-value by 2000.  </t>
              <ol spacing="normal" type="1"><li>
                  <t>NOTE: Some existing user agents interpret two-digit years differently.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Abort these steps and fail to parse the cookie-date if:  </t>
              <ul spacing="normal">
                <li>
                  <t>at least one of the found-day-of-month, found-month, found-year, or
found-time flags is not set,</t>
                </li>
                <li>
                  <t>the day-of-month-value is less than 1 or greater than 31,</t>
                </li>
                <li>
                  <t>the year-value is less than 1601,</t>
                </li>
                <li>
                  <t>the hour-value is greater than 23,</t>
                </li>
                <li>
                  <t>the minute-value is greater than 59, or</t>
                </li>
                <li>
                  <t>the second-value is greater than 59.</t>
                </li>
              </ul>
              <t>
(Note that leap seconds cannot be represented in this syntax.)</t>
            </li>
            <li>
              <t>Let the parsed-cookie-date be the date whose day-of-month, month,
year, hour, minute, and second (in UTC) are the
day-of-month-value, the month-value, the year-value, the hour-value,
the minute-value, and the second-value, respectively. If no such date
exists, abort these steps and fail to parse the cookie-date.</t>
            </li>
            <li>
              <t>Return the parsed-cookie-date as the result of this algorithm.</t>
            </li>
          </ol>
        </section>
        <section anchor="canonicalized-host-names">
          <name>Canonicalized Host Names</name>
          <t>A canonicalized host name is the string generated by the following algorithm:</t>
          <ol spacing="normal" type="1"><li>
              <t>Convert the host name to a sequence of individual domain name labels.</t>
            </li>
            <li>
              <t>Convert each label that is not a Non-Reserved LDH (NR-LDH) label, to an
A-label (see <xref section="2.3.2.1" sectionFormat="of" target="RFC5890"/> for the former and latter).</t>
            </li>
            <li>
              <t>Concatenate the resulting labels, separated by a %x2E (".") character.</t>
            </li>
          </ol>
        </section>
        <section anchor="domain-matching">
          <name>Domain Matching</name>
          <t>A string domain-matches a given domain string if at least one of the following
conditions hold:</t>
          <ul spacing="normal">
            <li>
              <t>The domain string and the string are identical. (Note that both the domain
string and the string will have been canonicalized to lower case at this
point.)</t>
            </li>
            <li>
              <t>All of the following conditions hold:  </t>
              <ul spacing="normal">
                <li>
                  <t>The domain string is a suffix of the string.</t>
                </li>
                <li>
                  <t>The last character of the string that is not included in the domain
string is a %x2E (".") character.</t>
                </li>
                <li>
                  <t>The string is a host name (i.e., not an IP address).</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="cookie-path">
          <name>Paths and Path-Match</name>
          <t>The user agent MUST use an algorithm equivalent to the following algorithm to
compute the default-path of a cookie:</t>
          <ol spacing="normal" type="1"><li>
              <t>Let uri-path be the path portion of the request-uri if such a portion
exists (and empty otherwise).</t>
            </li>
            <li>
              <t>If the uri-path is empty or if the first character of the uri-path is
not a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.</t>
            </li>
            <li>
              <t>If the uri-path contains no more than one %x2F ("/") character, output
%x2F ("/") and skip the remaining step.</t>
            </li>
            <li>
              <t>Output the characters of the uri-path from the first character up to, but
not including, the right-most %x2F ("/").</t>
            </li>
          </ol>
          <t>A request-path path-matches a given cookie-path if at least one of the
following conditions holds:</t>
          <ul spacing="normal">
            <li>
              <t>The cookie-path and the request-path are identical.  </t>
              <t>
Note that this differs from the rules in <xref target="RFC3986"/> for equivalence of the
path component, and hence two equivalent paths can have different cookies.</t>
            </li>
            <li>
              <t>The cookie-path is a prefix of the request-path, and the last character
of the cookie-path is %x2F ("/").</t>
            </li>
            <li>
              <t>The cookie-path is a prefix of the request-path, and the first character
of the request-path that is not included in the cookie-path is a %x2F
("/") character.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="same-site-requests">
        <name>"Same-site" and "cross-site" Requests</name>
        <t>Two origins are same-site if they satisfy the "same site" criteria defined in
<xref target="SAMESITE"/>. A request is "same-site" if the following criteria are true:</t>
        <ol spacing="normal" type="1"><li>
            <t>The request is not the result of a reload navigation triggered through a
user interface element (as defined by the user agent; e.g., a request
triggered by the user clicking a refresh button on a toolbar).</t>
          </li>
          <li>
            <t>The request's current url's origin is same-site with the request's
client's "site for cookies" (which is an origin), or if the request has no
client or the request's client is null.</t>
          </li>
        </ol>
        <t>Requests which are the result of a reload navigation triggered through a user
interface element are same-site if the reloaded document was originally
navigated to via a same-site request. A request that is not "same-site" is
instead "cross-site".</t>
        <t>The request's client's "site for cookies" is calculated depending upon its
client's type, as described in the following subsections:</t>
        <section anchor="document-requests">
          <name>Document-based requests</name>
          <t>The URI displayed in a user agent's address bar is the only security context
directly exposed to users, and therefore the only signal users can reasonably
rely upon to determine whether or not they trust a particular website. The
origin of that URI represents the context in which a user most likely believes
themselves to be interacting. We'll define this origin, the top-level
traversable's active document's origin, as the "top-level origin".</t>
          <t>For a document displayed in a top-level traversable, we can stop here: the
document's "site for cookies" is the top-level origin.</t>
          <t>For container documents, we need to audit the origins of each of a document's
ancestor navigables' active documents in order to account for the
"multiple-nested scenarios" described in <xref section="4" sectionFormat="of" target="RFC7034"/>. A document's
"site for cookies" is the top-level origin if and only if the top-level origin
is same-site with the document's origin, and with each of the document's
ancestor documents' origins. Otherwise its "site for cookies" is an origin set
to an opaque origin.</t>
          <t>Given a Document (<tt>document</tt>), the following algorithm returns its "site for
cookies":</t>
          <ol spacing="normal" type="1"><li>
              <t>Let <tt>top-document</tt> be the active document in <tt>document</tt>'s navigable's
top-level traversable.</t>
            </li>
            <li>
              <t>Let <tt>top-origin</tt> be the origin of <tt>top-document</tt>'s URI if <tt>top-document</tt>'s
sandboxed origin browsing context flag is set, and <tt>top-document</tt>'s origin
otherwise.</t>
            </li>
            <li>
              <t>Let <tt>documents</tt> be a list consisting of the active documents of
<tt>document</tt>'s inclusive ancestor navigables.</t>
            </li>
            <li>
              <t>For each <tt>item</tt> in <tt>documents</tt>:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>Let <tt>origin</tt> be the origin of <tt>item</tt>'s URI if <tt>item</tt>'s sandboxed origin
browsing context flag is set, and <tt>item</tt>'s origin otherwise.</t>
                </li>
                <li>
                  <t>If <tt>origin</tt> is not same-site with <tt>top-origin</tt>, return an origin set to
an opaque origin.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Return <tt>top-origin</tt>.</t>
            </li>
          </ol>
          <t>Note: This algorithm only applies when the entire chain of documents from
<tt>top-document</tt> to <tt>document</tt> are all active.</t>
        </section>
        <section anchor="worker-requests">
          <name>Worker-based requests</name>
          <t>Worker-driven requests aren't as clear-cut as document-driven requests, as
there isn't a clear link between a top-level traversable and a worker.
This is especially true for Service Workers <xref target="SERVICE-WORKERS"/>, which may
execute code in the background, without any document visible at all.</t>
          <t>Note: The descriptions below assume that workers must be same-origin with
the documents that instantiate them. If this invariant changes, we'll need to
take the worker's script's URI into account when determining their status.</t>
          <section anchor="dedicated-and-shared-requests">
            <name>Dedicated and Shared Workers</name>
            <t>Dedicated workers are simple, as each dedicated worker is bound to one and only
one document. Requests generated from a dedicated worker (via <tt>importScripts</tt>,
<tt>XMLHttpRequest</tt>, <tt>fetch()</tt>, etc) define their "site for cookies" as that
document's "site for cookies".</t>
            <t>Shared workers may be bound to multiple documents at once. As it is quite
possible for those documents to have distinct "site for cookies" values, the
worker's "site for cookies" will be an origin set to an opaque origin in cases
where the values are not all same-site with the worker's origin, and the
worker's origin in cases where the values agree.</t>
            <t>Given a WorkerGlobalScope (<tt>worker</tt>), the following algorithm returns its "site
for cookies":</t>
            <ol spacing="normal" type="1"><li>
                <t>Let <tt>site</tt> be <tt>worker</tt>'s origin.</t>
              </li>
              <li>
                <t>For each <tt>document</tt> in <tt>worker</tt>'s Documents:  </t>
                <ol spacing="normal" type="1"><li>
                    <t>Let <tt>document-site</tt> be <tt>document</tt>'s "site for cookies" (as defined
in <xref target="document-requests"/>).</t>
                  </li>
                  <li>
                    <t>If <tt>document-site</tt> is not same-site with <tt>site</tt>, return an origin
set to an opaque origin.</t>
                  </li>
                </ol>
              </li>
              <li>
                <t>Return <tt>site</tt>.</t>
              </li>
            </ol>
          </section>
          <section anchor="service-workers">
            <name>Service Workers</name>
            <t>Service Workers are more complicated, as they act as a completely separate
execution context with only tangential relationship to the Document which
registered them.</t>
            <t>How user agents handle Service Workers may differ, but user agents SHOULD
match the <xref target="SERVICE-WORKERS"/> specification.</t>
          </section>
        </section>
      </section>
      <section anchor="ignoring-cookies">
        <name>Ignoring Set-Cookie Header Fields</name>
        <t>User agents MAY ignore Set-Cookie header fields contained in responses with 100-level
status codes or based on its cookie policy (see <xref target="cookie-policy"/>).</t>
        <t>All other Set-Cookie header fields SHOULD be processed according to <xref target="set-cookie"/>.
That is, Set-Cookie header fields contained in responses with non-100-level status
codes (including those in responses with 400- and 500-level status codes)
SHOULD be processed unless ignored according to the user agent's cookie policy.</t>
      </section>
      <section anchor="ua-name-prefixes">
        <name>Cookie Name Prefixes</name>
        <t>User agents' requirements for cookie name prefixes differ slightly from
servers' (<xref target="server-name-prefixes"/>) in that UAs MUST match the prefix string
case-insensitively.</t>
        <t>The normative requirements for the prefixes are detailed in the storage model
algorithm defined in <xref target="storage-model"/>.</t>
        <t>This is because some servers will process cookies case-insensitively, resulting
in them unintentionally miscapitalizing and accepting miscapitalized prefixes.</t>
        <t>For example, if a server sends the following <tt>Set-Cookie</tt> header field</t>
        <artwork><![CDATA[
Set-Cookie: __SECURE-SID=12345
]]></artwork>
        <t>to a UA which checks prefixes case-sensitively it will accept this cookie and
the server would incorrectly believe the cookie is subject the same guarantees
as one spelled <tt>__Secure-</tt>.</t>
        <t>Additionally the server is vulnerable to an attacker that purposefully
miscapitalizes a cookie in order to impersonate a prefixed cookie. For example,
a site already has a cookie <tt>__Secure-SID=12345</tt> and by some means an attacker
sends the following <tt>Set-Cookie</tt> header field for the site to a UA which checks
prefixes case-sensitively.</t>
        <artwork><![CDATA[
Set-Cookie: __SeCuRe-SID=evil
]]></artwork>
        <t>The next time a user visits the site the UA will send both cookies:</t>
        <artwork><![CDATA[
Cookie: __Secure-SID=12345; __SeCuRe-SID=evil
]]></artwork>
        <t>The server, being case-insensitive, won't be able to tell the difference
between the two cookies allowing the attacker to compromise the site.</t>
        <t>To prevent these issues, UAs MUST match cookie name prefixes case-insensitive.</t>
        <t>Note: Cookies with different names are still considered separate by UAs. So
both <tt>__Secure-foo=bar</tt> and <tt>__secure-foo=baz</tt> can exist as distinct cookies
simultaneously and both would have the requirements of the <tt>__Secure-</tt> prefix
applied.</t>
        <t>The following are examples of <tt>Set-Cookie</tt> header fields that would be rejected
by a conformant user agent.</t>
        <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example
Set-Cookie: __secure-SID=12345; Domain=site.example
Set-Cookie: __SECURE-SID=12345; Domain=site.example
Set-Cookie: __Host-SID=12345
Set-Cookie: __host-SID=12345; Secure
Set-Cookie: __host-SID=12345; Domain=site.example
Set-Cookie: __HOST-SID=12345; Domain=site.example; Path=/
Set-Cookie: __Host-SID=12345; Secure; Domain=site.example; Path=/
Set-Cookie: __host-SID=12345; Secure; Domain=site.example; Path=/
Set-Cookie: __HOST-SID=12345; Secure; Domain=site.example; Path=/
]]></sourcecode>
        <t>Whereas the following <tt>Set-Cookie</tt> header fields would be accepted if set from
a secure origin.</t>
        <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example; Secure
Set-Cookie: __secure-SID=12345; Domain=site.example; Secure
Set-Cookie: __SECURE-SID=12345; Domain=site.example; Secure
Set-Cookie: __Host-SID=12345; Secure; Path=/
Set-Cookie: __host-SID=12345; Secure; Path=/
Set-Cookie: __HOST-SID=12345; Secure; Path=/
]]></sourcecode>
      </section>
      <section anchor="cookie-lifetime-limits">
        <name>Cookie Lifetime Limits</name>
        <t>When processing cookies with a specified lifetime, either with the Expires or
with the Max-Age attribute, the user agent MUST limit the maximum age of the
cookie. The limit SHOULD NOT be greater than 400 days (34560000 seconds) in the
future. The RECOMMENDED limit is 400 days in the future, but the user agent MAY
adjust the limit (see <xref target="cookie-policy"/>). Expires or Max-Age attributes that
specify a lifetime longer than the limit MUST be reduced to the limit.</t>
      </section>
      <section anchor="set-cookie">
        <name>The Set-Cookie Header Field</name>
        <t>When a user agent receives a Set-Cookie header field in an HTTP response, the
user agent MAY ignore the Set-Cookie header field in its entirety
(see <xref target="ignoring-cookies"/>).</t>
        <t>If the user agent does not ignore the Set-Cookie header field in its entirety,
the user agent MUST parse the field-value of the Set-Cookie header field as a
set-cookie-string (defined below).</t>
        <t>NOTE: The algorithm below is more permissive than the grammar in <xref target="sane-set-cookie"/>.
For example, the algorithm allows cookie-name to be comprised of cookie-octets
instead of being a token as specified in <xref target="sane-set-cookie"/> and the algorithm
accommodates some characters that are not cookie-octets according to the
grammar in <xref target="sane-set-cookie"/>. In addition, the algorithm below also strips
leading and trailing whitespace from the cookie name and value (but maintains
internal whitespace), whereas the grammar in <xref target="sane-set-cookie"/> forbids
whitespace in these positions. User agents use this algorithm so as to
interoperate with servers that do not follow the recommendations in <xref target="sane-profile"/>.</t>
        <t>NOTE: As set-cookie-string may originate from a non-HTTP API, it is not
guaranteed to be free of CTL characters, so this algorithm handles them
explicitly. Horizontal tab (%x09) is excluded from the CTL characters that
lead to set-cookie-string rejection, as it is considered whitespace, which is
handled separately.</t>
        <t>NOTE: The set-cookie-string may contain octet sequences that appear
percent-encoded as per <xref section="2.1" sectionFormat="of" target="RFC3986"/>. However, a user agent
MUST NOT decode these sequences and instead parse the individual octets
as specified in this algorithm.</t>
        <t>A user agent MUST use an algorithm equivalent to the following algorithm to
parse a set-cookie-string:</t>
        <ol spacing="normal" type="1"><li>
            <t>If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F character
(CTL characters excluding HTAB):
Abort these steps and ignore the set-cookie-string entirely.</t>
          </li>
          <li>
            <t>If the set-cookie-string contains a %x3B (";") character:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The name-value-pair string consists of the characters up to, but not
including, the first %x3B (";"), and the unparsed-attributes consist of
the remainder of the set-cookie-string (including the %x3B (";") in
question).</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The name-value-pair string consists of all the characters contained in
the set-cookie-string, and the unparsed-attributes is the empty
string.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the name-value-pair string lacks a %x3D ("=") character, then the name
string is empty, and the value string is the value of name-value-pair.  </t>
            <t>
Otherwise, the (possibly empty) name string consists of the characters up
to, but not including, the first %x3D ("=") character, and the (possibly
empty) value string consists of the characters after the first %x3D ("=")
character.</t>
          </li>
          <li>
            <t>Remove any leading or trailing WSP characters from the name string and the
value string.</t>
          </li>
          <li>
            <t>If the sum of the lengths of the name string and the value string is more
than 4096 octets, abort these steps and ignore the set-cookie-string entirely.</t>
          </li>
          <li>
            <t>The cookie-name is the name string, and the cookie-value is the value string.</t>
          </li>
        </ol>
        <t>The user agent MUST use an algorithm equivalent to the following algorithm to
parse the unparsed-attributes:</t>
        <ol spacing="normal" type="1"><li>
            <t>If the unparsed-attributes string is empty, skip the rest of these steps.</t>
          </li>
          <li>
            <t>Discard the first character of the unparsed-attributes (which will be a
%x3B (";") character).</t>
          </li>
          <li>
            <t>If the remaining unparsed-attributes contains a %x3B (";") character:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Consume the characters of the unparsed-attributes up to, but not
including, the first %x3B (";") character.</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Consume the remainder of the unparsed-attributes.</t>
              </li>
            </ol>
            <t>
Let the cookie-av string be the characters consumed in this step.</t>
          </li>
          <li>
            <t>If the cookie-av string contains a %x3D ("=") character:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The (possibly empty) attribute-name string consists of the characters
up to, but not including, the first %x3D ("=") character, and the
(possibly empty) attribute-value string consists of the characters
after the first %x3D ("=") character.</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The attribute-name string consists of the entire cookie-av string,
and the attribute-value string is empty.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Remove any leading or trailing WSP characters from the attribute-name
string and the attribute-value string.</t>
          </li>
          <li>
            <t>If the attribute-value is longer than 1024 octets, ignore the cookie-av
string and return to Step 1 of this algorithm.</t>
          </li>
          <li>
            <t>Process the attribute-name and attribute-value according to the
requirements in the following subsections. (Notice that attributes with
unrecognized attribute-names are ignored.)</t>
          </li>
          <li>
            <t>Return to Step 1 of this algorithm.</t>
          </li>
        </ol>
        <t>When the user agent finishes parsing the set-cookie-string, the user agent is
said to "receive a cookie" from the request-uri with name cookie-name,
value cookie-value, and attributes cookie-attribute-list. (See <xref target="storage-model"/>
for additional requirements triggered by receiving a cookie.)</t>
        <section anchor="ua-attribute-expires">
          <name>The Expires Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "Expires", the
user agent MUST process the cookie-av as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>Let the expiry-time be the result of parsing the attribute-value as
cookie-date (see <xref target="cookie-date"/>).</t>
            </li>
            <li>
              <t>If the attribute-value failed to parse as a cookie date, ignore the
cookie-av.</t>
            </li>
            <li>
              <t>Let cookie-age-limit be the maximum age of the cookie (which SHOULD be 400 days
in the future or sooner, see <xref target="cookie-lifetime-limits"/>).</t>
            </li>
            <li>
              <t>If the expiry-time is more than cookie-age-limit, the user agent MUST set the
expiry time to cookie-age-limit in seconds.</t>
            </li>
            <li>
              <t>If the expiry-time is earlier than the earliest date the user agent can
represent, the user agent MAY replace the expiry-time with the earliest
representable date.</t>
            </li>
            <li>
              <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Expires and an attribute-value of expiry-time.</t>
            </li>
          </ol>
        </section>
        <section anchor="ua-attribute-max-age">
          <name>The Max-Age Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "Max-Age", the
user agent MUST process the cookie-av as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>If the attribute-value is empty, ignore the cookie-av.</t>
            </li>
            <li>
              <t>If the first character of the attribute-value is neither a DIGIT, nor a "-"
character followed by a DIGIT, ignore the cookie-av.</t>
            </li>
            <li>
              <t>If the remainder of attribute-value contains a non-DIGIT character, ignore
the cookie-av.</t>
            </li>
            <li>
              <t>Let delta-seconds be the attribute-value converted to a base 10 integer.</t>
            </li>
            <li>
              <t>Let cookie-age-limit be the maximum age of the cookie (which SHOULD be 400 days
or less, see <xref target="cookie-lifetime-limits"/>).</t>
            </li>
            <li>
              <t>Set delta-seconds to the smaller of its present value and cookie-age-limit.</t>
            </li>
            <li>
              <t>If delta-seconds is less than or equal to zero (0), let expiry-time be
the earliest representable date and time. Otherwise, let the expiry-time
be the current date and time plus delta-seconds seconds.</t>
            </li>
            <li>
              <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Max-Age and an attribute-value of expiry-time.</t>
            </li>
          </ol>
        </section>
        <section anchor="the-domain-attribute">
          <name>The Domain Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "Domain", the user
agent MUST process the cookie-av as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>Let cookie-domain be the attribute-value.</t>
            </li>
            <li>
              <t>If cookie-domain starts with %x2E ("."), let cookie-domain be cookie-domain
without its leading %x2E (".").</t>
            </li>
            <li>
              <t>Convert the cookie-domain to lower case.</t>
            </li>
            <li>
              <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Domain and an attribute-value of cookie-domain.</t>
            </li>
          </ol>
        </section>
        <section anchor="the-path-attribute">
          <name>The Path Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "Path", the user
agent MUST process the cookie-av as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>If the attribute-value is empty or if the first character of the
attribute-value is not %x2F ("/"):  </t>
              <ol spacing="normal" type="1"><li>
                  <t>Let cookie-path be the default-path.</t>
                </li>
              </ol>
              <t>
Otherwise:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>Let cookie-path be the attribute-value.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Path and an attribute-value of cookie-path.</t>
            </li>
          </ol>
        </section>
        <section anchor="the-secure-attribute">
          <name>The Secure Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "Secure", the
user agent MUST append an attribute to the cookie-attribute-list with an
attribute-name of Secure and an empty attribute-value.</t>
        </section>
        <section anchor="the-httponly-attribute">
          <name>The HttpOnly Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "HttpOnly", the
user agent MUST append an attribute to the cookie-attribute-list with an
attribute-name of HttpOnly and an empty attribute-value.</t>
        </section>
        <section anchor="the-samesite-attribute">
          <name>The SameSite Attribute</name>
          <t>If the attribute-name case-insensitively matches the string "SameSite", the
user agent MUST process the cookie-av as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Let <tt>enforcement</tt> be "Default".</t>
            </li>
            <li>
              <t>If cookie-av's attribute-value is a case-insensitive match for "None",
set <tt>enforcement</tt> to "None".</t>
            </li>
            <li>
              <t>If cookie-av's attribute-value is a case-insensitive match for "Strict",
set <tt>enforcement</tt> to "Strict".</t>
            </li>
            <li>
              <t>If cookie-av's attribute-value is a case-insensitive match for "Lax", set
<tt>enforcement</tt> to "Lax".</t>
            </li>
            <li>
              <t>Append an attribute to the cookie-attribute-list with an attribute-name
of "SameSite" and an attribute-value of <tt>enforcement</tt>.</t>
            </li>
          </ol>
          <section anchor="strict-lax">
            <name>"Strict" and "Lax" enforcement</name>
            <t>Same-site cookies in "Strict" enforcement mode will not be sent along with
top-level navigations which are triggered from a cross-site document context.
As discussed in <xref target="top-level-navigations"/>, this might or might not be compatible
with existing session management systems. In the interests of providing a
drop-in mechanism that mitigates the risk of CSRF attacks, developers may set
the <tt>SameSite</tt> attribute in a "Lax" enforcement mode that carves out an
exception which sends same-site cookies along with cross-site requests if and
only if they are top-level navigations which use a "safe" (in the <xref target="RFC9110"/>
sense) HTTP method. (Note that a request's method may be changed from POST
to GET for some redirects (see Sections <xref target="RFC9110" section="15.4.2" sectionFormat="bare"/> and <xref target="RFC9110" section="15.4.3" sectionFormat="bare"/> of <xref target="RFC9110"/>); in
these cases, a request's "safe"ness is determined based on the method of the
current redirect hop.)</t>
            <t>Lax enforcement provides reasonable defense in depth against CSRF attacks that
rely on unsafe HTTP methods (like <tt>POST</tt>), but does not offer a robust defense
against CSRF as a general category of attack:</t>
            <ol spacing="normal" type="1"><li>
                <t>Attackers can still pop up new windows or trigger top-level navigations in
order to create a "same-site" request (as described in <xref target="document-requests"/>), which
is only a speedbump along the road to exploitation.</t>
              </li>
              <li>
                <t>Features like <tt>&lt;link rel='prerender'&gt;</tt> <xref target="prerendering"/> can be exploited
to create "same-site" requests without the risk of user detection.</t>
              </li>
            </ol>
            <t>When possible, developers should use a session management mechanism such as
that described in <xref target="top-level-navigations"/> to mitigate the risk of CSRF more
completely.</t>
          </section>
          <section anchor="lax-allowing-unsafe">
            <name>"Lax-Allowing-Unsafe" enforcement</name>
            <t>As discussed in <xref target="unsafe-top-level-requests"/>, compatibility concerns may
necessitate the use of a "Lax-allowing-unsafe" enforcement mode that allows
cookies to be sent with a cross-site HTTP request if and only if it is a
top-level request, regardless of request method. That is, the
"Lax-allowing-unsafe" enforcement mode waives the requirement for the HTTP
request's method to be "safe" in the <tt>SameSite</tt> enforcement step of the
retrieval algorithm in <xref target="retrieval-algorithm"/>. (All cookies, regardless of
<tt>SameSite</tt> enforcement mode, may be set for top-level navigations, regardless of
HTTP request method, as specified in <xref target="storage-model"/>.)</t>
            <t>"Lax-allowing-unsafe" is not a distinct value of the <tt>SameSite</tt> attribute.
Rather, user agents MAY apply "Lax-allowing-unsafe" enforcement only to cookies
that did not explicitly specify a <tt>SameSite</tt> attribute (i.e., those whose
same-site-flag was set to "Default" by default). To limit the scope of this
compatibility mode, user agents which apply "Lax-allowing-unsafe" enforcement
SHOULD restrict the enforcement to cookies which were created recently.
Deployment experience has shown a cookie age of 2 minutes or less to be a
reasonable limit.</t>
            <t>If the user agent uses "Lax-allowing-unsafe" enforcement, it MUST apply the
following modification to the retrieval algorithm defined in
<xref target="retrieval-algorithm"/>:</t>
            <t>Replace the condition in the penultimate bullet point of step 1 of the retrieval
algorithm reading</t>
            <artwork><![CDATA[
 * The HTTP request associated with the retrieval uses a "safe"
   method.
]]></artwork>
            <t>with</t>
            <artwork><![CDATA[
 * At least one of the following is true:

   1.  The HTTP request associated with the retrieval uses a "safe"
       method.

   2.  The cookie's same-site-flag is "Default" and the amount of
       time elapsed since the cookie's creation-time is at most a
       duration of the user agent's choosing.
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="storage-model">
        <name>Storage Model</name>
        <t>The user agent stores the following fields about each cookie: name, value,
expiry-time, domain, path, creation-time, last-access-time,
persistent-flag, host-only-flag, secure-only-flag, http-only-flag,
and same-site-flag.</t>
        <t>When the user agent "receives a cookie" from a request-uri with name
cookie-name, value cookie-value, and attributes cookie-attribute-list, the
user agent MUST process the cookie as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>A user agent MAY ignore a received cookie in its entirety. See
<xref target="ignoring-cookies"/>.</t>
          </li>
          <li>
            <t>If cookie-name is empty and cookie-value is empty, abort these steps and
ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie-name or the cookie-value contains a
%x00-08 / %x0A-1F / %x7F character (CTL characters excluding HTAB),
abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the sum of the lengths of cookie-name and cookie-value is more than
4096 octets, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>Create a new cookie with name cookie-name, value cookie-value. Set the
creation-time and the last-access-time to the current date and time.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an attribute-name
of "Max-Age":  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
"Max-Age".</t>
              </li>
            </ol>
            <t>
Otherwise, if the cookie-attribute-list contains an attribute with an
attribute-name of "Expires" (and does not contain an attribute with an
attribute-name of "Max-Age"):  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
"Expires".</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to false.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to the latest representable date.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Domain":  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let the domain-attribute be the attribute-value of the last
attribute in the cookie-attribute-list with both an
attribute-name of "Domain" and an attribute-value whose
length is no more than 1024 octets. (Note that a leading %x2E
("."), if present, is ignored even though that character is not
permitted.)</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let the domain-attribute be the empty string.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the domain-attribute contains a character that is not in the range of <xref target="USASCII"/>
characters, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the user agent is configured to reject "public suffixes" and the
domain-attribute is a public suffix:  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the domain-attribute is identical to the canonicalized
request-host:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Let the domain-attribute be the empty string.</t>
                  </li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Abort these steps and ignore the cookie entirely.</t>
                  </li>
                </ol>
              </li>
            </ol>
            <t>
NOTE: This step prevents <tt>attacker.example</tt> from disrupting the integrity of
<tt>site.example</tt> by setting a cookie with a Domain attribute of "example".</t>
          </li>
          <li>
            <t>If the domain-attribute is non-empty:  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the canonicalized request-host does not domain-match the
domain-attribute:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Abort these steps and ignore the cookie entirely.</t>
                  </li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Set the cookie's host-only-flag to false.</t>
                  </li>
                  <li>
                    <t>Set the cookie's domain to the domain-attribute.</t>
                  </li>
                </ol>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's host-only-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's domain to the canonicalized request-host.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Path", set the cookie's path to attribute-value of
the last attribute in the cookie-attribute-list with both an
attribute-name of "Path" and an attribute-value whose length is no
more than 1024 octets. Otherwise, set the cookie's path to the
default-path of the request-uri.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Secure", set the cookie's secure-only-flag to true.
Otherwise, set the cookie's secure-only-flag to false.</t>
          </li>
          <li>
            <t>If the request-uri does not denote a "secure" connection (as defined by the
user agent), and the cookie's secure-only-flag is true, then abort these
steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "HttpOnly", set the cookie's http-only-flag to true.
Otherwise, set the cookie's http-only-flag to false.</t>
          </li>
          <li>
            <t>If the cookie was received from a "non-HTTP" API and the cookie's
http-only-flag is true, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie's secure-only-flag is false, and the request-uri does not
denote a "secure" connection, then abort these steps and ignore the cookie
entirely if the cookie store contains one or more cookies that meet all of
the following criteria:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Their name matches the name of the newly-created cookie.</t>
              </li>
              <li>
                <t>Their secure-only-flag is true.</t>
              </li>
              <li>
                <t>Their domain domain-matches the domain of the newly-created cookie, or
vice-versa.</t>
              </li>
              <li>
                <t>The path of the newly-created cookie path-matches the path of the
existing cookie.</t>
              </li>
            </ol>
            <t>
Note: The path comparison is not symmetric, ensuring only that a
newly-created, non-secure cookie does not overlay an existing secure
cookie, providing some mitigation against cookie-fixing attacks. That is,
given an existing secure cookie named 'a' with a path of '/login', a
non-secure cookie named 'a' could be set for a path of '/' or '/foo', but
not for a path of '/login' or '/login/en'.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "SameSite", and an attribute-value of "Strict", "Lax", or
"None", set the cookie's same-site-flag to the attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of "SameSite".
Otherwise, set the cookie's same-site-flag to "Default".</t>
          </li>
          <li>
            <t>If the cookie's <tt>same-site-flag</tt> is not "None":  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the cookie was received from a "non-HTTP" API, and the API was called
from a navigable's active document whose "site for cookies" is
not same-site with the top-level origin, then abort these steps and
ignore the newly created cookie entirely.</t>
              </li>
              <li>
                <t>If the cookie was received from a "same-site" request (as defined in
<xref target="same-site-requests"/>), skip the remaining substeps and continue
processing the cookie.</t>
              </li>
              <li>
                <t>If the cookie was received from a request which is navigating a
top-level traversable <xref target="HTML"/> (e.g. if the request's "reserved
client" is either <tt>null</tt> or an environment whose "target browsing
context"'s navigable is a top-level traversable), skip the remaining
substeps and continue processing the cookie.      </t>
                <t>
Note: Top-level navigations can create a cookie with any <tt>SameSite</tt>
value, even if the new cookie wouldn't have been sent along with
the request had it already existed prior to the navigation.</t>
              </li>
              <li>
                <t>Abort these steps and ignore the newly created cookie entirely.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie's "same-site-flag" is "None", abort these steps and ignore the
cookie entirely unless the cookie's secure-only-flag is true.</t>
          </li>
          <li>
            <t>If the cookie-name begins with a case-insensitive match for the string
"__Secure-", abort these steps and ignore the cookie entirely unless the
cookie's secure-only-flag is true.</t>
          </li>
          <li>
            <t>If the cookie-name begins with a case-insensitive match for the string
"__Host-", abort these steps and ignore the cookie entirely unless the
cookie meets all the following criteria:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The cookie's secure-only-flag is true.</t>
              </li>
              <li>
                <t>The cookie's host-only-flag is true.</t>
              </li>
              <li>
                <t>The cookie-attribute-list contains an attribute with an attribute-name
of "Path", and the cookie's path is <tt>/</tt>.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-name is empty and either of the following conditions are
true, abort these steps and ignore the cookie entirely:  </t>
            <ul spacing="normal">
              <li>
                <t>the cookie-value begins with a case-insensitive match for the string
"__Secure-"</t>
              </li>
              <li>
                <t>the cookie-value begins with a case-insensitive match for the string
"__Host-"</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the cookie store contains a cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let old-cookie be the existing cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie. (Notice that this
algorithm maintains the invariant that there is at most one such
cookie.)</t>
              </li>
              <li>
                <t>If the newly-created cookie was received from a "non-HTTP" API and the
old-cookie's http-only-flag is true, abort these steps and ignore the
newly created cookie entirely.</t>
              </li>
              <li>
                <t>Update the creation-time of the newly-created cookie to match the
creation-time of the old-cookie.</t>
              </li>
              <li>
                <t>Remove the old-cookie from the cookie store.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Insert the newly-created cookie into the cookie store.</t>
          </li>
        </ol>
        <t>A cookie is "expired" if the cookie has an expiry date in the past.</t>
        <t>The user agent MUST evict all expired cookies from the cookie store if, at any
time, an expired cookie exists in the cookie store.</t>
        <t>At any time, the user agent MAY "remove excess cookies" from the cookie store
if the number of cookies sharing a domain field exceeds some
implementation-defined upper bound (such as 50 cookies).</t>
        <t>At any time, the user agent MAY "remove excess cookies" from the cookie store
if the cookie store exceeds some predetermined upper bound (such as 3000
cookies).</t>
        <t>When the user agent removes excess cookies from the cookie store, the user
agent MUST evict cookies in the following priority order:</t>
        <ol spacing="normal" type="1"><li>
            <t>Expired cookies.</t>
          </li>
          <li>
            <t>Cookies whose secure-only-flag is false, and which share a domain field
with more than a predetermined number of other cookies.</t>
          </li>
          <li>
            <t>Cookies that share a domain field with more than a predetermined number of
other cookies.</t>
          </li>
          <li>
            <t>All cookies.</t>
          </li>
        </ol>
        <t>If two cookies have the same removal priority, the user agent MUST evict the
cookie with the earliest last-access-time first.</t>
        <t>When "the current session is over" (as defined by the user agent), the user
agent MUST remove from the cookie store all cookies with the persistent-flag
set to false.</t>
      </section>
      <section anchor="retrieval-model">
        <name>Retrieval Model</name>
        <t>This section defines how cookies are retrieved from a cookie store in the form
of a cookie-string. A "retrieval" is any event which requires generating a
cookie-string. For example, a retrieval may occur in order to build a Cookie
header field for an HTTP request, or may be required in order to return a
cookie-string from a call to a "non-HTTP" API that provides access to cookies. A
retrieval has an associated URI, same-site status, and type, which
are defined below depending on the type of retrieval.</t>
        <section anchor="cookie">
          <name>The Cookie Header Field</name>
          <t>The user agent includes stored cookies in the Cookie HTTP request header field.</t>
          <t>A user agent MAY omit the Cookie header field in its entirety.  For example, the
user agent might wish to block sending cookies during "third-party" requests
from setting cookies (see <xref target="third-party-cookies"/>).</t>
          <t>If the user agent does attach a Cookie header field to an HTTP request, the
user agent MUST generate a single cookie-string and the user agent MUST compute
the cookie-string following the algorithm defined in <xref target="retrieval-algorithm"/>,
where the retrieval's URI is the request-uri, the retrieval's same-site status
is computed for the HTTP request as defined in <xref target="same-site-requests"/>, and the
retrieval's type is "HTTP".</t>
          <t>Note: Previous versions of this specification required that only one Cookie
header field be sent in requests. This is no longer a requirement. While this
specification requires that a single cookie-string be produced, some user agents
may split that string across multiple cookie header fields. For examples, see
<xref section="8.2.3" sectionFormat="of" target="RFC9113"/> and <xref section="4.2.1" sectionFormat="of" target="RFC9114"/>.</t>
        </section>
        <section anchor="non-http">
          <name>Non-HTTP APIs</name>
          <t>The user agent MAY implement "non-HTTP" APIs that can be used to access
stored cookies.</t>
          <t>A user agent MAY return an empty cookie-string in certain contexts, such as
when a retrieval occurs within a third-party context (see
<xref target="third-party-cookies"/>).</t>
          <t>If a user agent does return cookies for a given call to a "non-HTTP" API with
an associated Document, then the user agent MUST compute the cookie-string
following the algorithm defined in <xref target="retrieval-algorithm"/>, where the
retrieval's URI is defined by the caller (see <xref target="DOM-DOCUMENT-COOKIE"/>), the
retrieval's same-site status is "same-site" if the Document's "site for
cookies" is same-site with the top-level origin as defined in
<xref target="document-requests"/> (otherwise it is "cross-site"), and the retrieval's type
is "non-HTTP".</t>
        </section>
        <section anchor="retrieval-algorithm">
          <name>Retrieval Algorithm</name>
          <t>Given a cookie store and a retrieval, the following algorithm returns a
cookie-string from a given cookie store.</t>
          <ol spacing="normal" type="1"><li>
              <t>Let cookie-list be the set of cookies from the cookie store that meets all
of the following requirements:  </t>
              <ul spacing="normal">
                <li>
                  <t>Either:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The cookie's host-only-flag is true and the canonicalized
host of the retrieval's URI is identical to the cookie's domain.</t>
                    </li>
                  </ul>
                  <t>
Or:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The cookie's host-only-flag is false and the canonicalized
host of the retrieval's URI domain-matches the cookie's domain.</t>
                    </li>
                  </ul>
                  <t>
NOTE: (For user agents configured to reject "public suffixes") It's
possible that the public suffix list was changed since a cookie was
created. If this change results in a cookie's domain becoming a public
suffix then that cookie is considered invalid as it would have been
rejected during creation (See <xref target="storage-model"/> step 9). User agents
should be careful to avoid retrieving these invalid cookies even if they
domain-match the host of the retrieval's URI.</t>
                </li>
                <li>
                  <t>The retrieval's URI's path path-matches the cookie's path.</t>
                </li>
                <li>
                  <t>If the cookie's secure-only-flag is true, then the retrieval's URI must
denote a "secure" connection (as defined by the user agent).      </t>
                  <t>
NOTE: The notion of a "secure" connection is not defined by this document.
Typically, user agents consider a connection secure if the connection makes
use of transport-layer security, such as SSL or TLS, or if the host is
trusted. For example, most user agents consider "https" to be a scheme that
denotes a secure protocol and "localhost" to be trusted host.</t>
                </li>
                <li>
                  <t>If the cookie's http-only-flag is true, then exclude the cookie if the
retrieval's type is "non-HTTP".</t>
                </li>
                <li>
                  <t>If the cookie's same-site-flag is not "None" and the retrieval's same-site
status is "cross-site", then exclude the cookie unless all of the
following conditions are met:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The retrieval's type is "HTTP".</t>
                    </li>
                    <li>
                      <t>The same-site-flag is "Lax" or "Default".</t>
                    </li>
                    <li>
                      <t>The HTTP request associated with the retrieval uses a "safe" method.</t>
                    </li>
                    <li>
                      <t>The target browsing context of the HTTP request associated with the
retrieval is the active browsing context or a top-level traversable.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>The user agent SHOULD sort the cookie-list in the following order:  </t>
              <ul spacing="normal">
                <li>
                  <t>Cookies with longer paths are listed before cookies with shorter
paths.</t>
                </li>
                <li>
                  <t>Among cookies that have equal-length path fields, cookies with earlier
creation-times are listed before cookies with later creation-times.</t>
                </li>
              </ul>
              <t>
NOTE: Not all user agents sort the cookie-list in this order, but this order
reflects common practice when this document was written, and, historically,
there have been servers that (erroneously) depended on this order.</t>
            </li>
            <li>
              <t>Update the last-access-time of each cookie in the cookie-list to the
current date and time.</t>
            </li>
            <li>
              <t>Serialize the cookie-list into a cookie-string by processing each cookie
in the cookie-list in order:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>If the cookies' name is not empty, output the cookie's name followed by
the %x3D ("=") character.</t>
                </li>
                <li>
                  <t>If the cookies' value is not empty, output the cookie's value.</t>
                </li>
                <li>
                  <t>If there is an unprocessed cookie in the cookie-list, output the
characters %x3B and %x20 ("; ").</t>
                </li>
              </ol>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="limits">
        <name>Limits</name>
        <t>Practical user agent implementations have limits on the number and size of
cookies that they can store. General-use user agents SHOULD provide each of the
following minimum capabilities:</t>
        <ul spacing="normal">
          <li>
            <t>At least 50 cookies per domain.</t>
          </li>
          <li>
            <t>At least 3000 cookies total.</t>
          </li>
        </ul>
        <t>User agents MAY limit the maximum number of cookies they store, and may evict
any cookie at any time (whether at the request of the user or due to
implementation limitations).</t>
        <t>Note that a limit on the maximum number of cookies also limits the total size of
the stored cookies, due to the length limits which MUST be enforced in
<xref target="set-cookie"/>.</t>
        <t>Servers SHOULD use as few and as small cookies as possible to avoid reaching
these implementation limits, minimize network bandwidth due to the
Cookie header field being included in every request, and to avoid reaching
server header field limits (See <xref target="server-syntax"/>).</t>
        <t>Servers SHOULD gracefully degrade if the user agent fails to return one or more
cookies in the Cookie header field because the user agent might evict any cookie
at any time.</t>
      </section>
      <section anchor="application-programming-interfaces">
        <name>Application Programming Interfaces</name>
        <t>One reason the Cookie and Set-Cookie header fields use such esoteric syntax is
that many platforms (both in servers and user agents) provide a string-based
application programming interface (API) to cookies, requiring
application-layer programmers to generate and parse the syntax used by the
Cookie and Set-Cookie header fields, which many programmers have done incorrectly,
resulting in interoperability problems.</t>
        <t>Instead of providing string-based APIs to cookies, platforms would be
well-served by providing more semantic APIs. It is beyond the scope of this
document to recommend specific API designs, but there are clear benefits to
accepting an abstract "Date" object instead of a serialized date string.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Cookies' primary privacy risk is their ability to correlate user activity. This
can happen on a single site, but is most problematic when activity is tracked across different,
seemingly unconnected Web sites to build a user profile.</t>
      <t>Over time, this capability (warned against explicitly in <xref target="RFC2109"/> and all of its successors)
has become widely used for varied reasons including:</t>
      <ul spacing="normal">
        <li>
          <t>authenticating users across sites,</t>
        </li>
        <li>
          <t>assembling information on users,</t>
        </li>
        <li>
          <t>protecting against fraud and other forms of undesirable traffic,</t>
        </li>
        <li>
          <t>targeting advertisements at specific users or at users with specified attributes,</t>
        </li>
        <li>
          <t>measuring how often ads are shown to users, and</t>
        </li>
        <li>
          <t>recognizing when an ad resulted in a change in user behavior.</t>
        </li>
      </ul>
      <t>While not every use of cookies is necessarily problematic for privacy, their potential for abuse
has become a widespread concern in the Internet community and broader society. In response to these concerns, user agents
have actively constrained cookie functionality in various ways (as allowed and encouraged by
previous specifications), while avoiding disruption to features they judge desirable for the health
of the Web.</t>
      <t>It is too early to declare consensus on which specific mechanism(s) should be used to mitigate cookies' privacy impact; user agents' ongoing changes to how they are handled are best characterised as experiments that
can provide input into that eventual consensus.</t>
      <t>Instead, this document describes limited, general mitigations against the privacy risks associated
with cookies that enjoy wide deployment at the time of writing. It is expected that implementations
will continue to experiment and impose stricter, more well-defined limitations on cookies over
time. Future versions of this document might codify those mechanisms based upon deployment
experience. If functions that currently rely on cookies can be supported by separate, targeted
mechanisms, they might be documented in separate specifications and stricter limitations on cookies
might become feasible.</t>
      <t>Note that cookies are not the only mechanism that can be used to track users across sites, so while
these mitigations are necessary to improve Web privacy, they are not sufficient on their own.</t>
      <section anchor="third-party-cookies">
        <name>Third-Party Cookies</name>
        <t>A "third-party" or cross-site cookie is one that is associated with embedded content (such as
scripts, images, stylesheets, frames) that is obtained from a different server than the one that
hosts the primary resource (usually, the Web page that the user is viewing). Third-party cookies
are often used to correlate users' activity on different sites.</t>
        <t>Because of their inherent privacy issues, most user agents now limit third-party cookies in a
variety of ways. Some completely block third-party cookies by refusing to process third-party
Set-Cookie header fields and refusing to send third-party Cookie header fields. Some partition
cookies based upon the first-party context, so that different cookies are sent depending on the
site being browsed. Some block cookies based upon user agent cookie policy and/or user controls.</t>
        <t>While this document does not endorse or require a specific approach, it is RECOMMENDED that user
agents adopt a policy for third-party cookies that is as restrictive as compatibility constraints
permit. Consequently, resources cannot rely upon third-party cookies being treated consistently by
user agents for the foreseeable future.</t>
      </section>
      <section anchor="cookie-policy">
        <name>Cookie Policy</name>
        <t>User agents MAY enforce a cookie policy consisting of restrictions on how
cookies may be used or ignored (see <xref target="ignoring-cookies"/>).</t>
        <t>A cookie policy may govern which domains or parties, as in first and third parties
(see <xref target="third-party-cookies"/>), for which the user agent will allow cookie access.
The policy can also define limits on cookie size, cookie expiry (see
<xref target="cookie-lifetime-limits"/>), and the number of cookies per
domain or in total.</t>
        <t>The recommended cookie expiry upper limit is 400 days. User agents may set
a lower limit to enforce shorter data retention timelines, or set the limit higher
to support longer retention when appropriate (e.g., server-to-server
communication over HTTPS).</t>
        <t>The goal of a restrictive cookie policy is often to improve security or privacy.
User agents often allow users to change the cookie policy (see <xref target="user-controls"/>).</t>
      </section>
      <section anchor="user-controls">
        <name>User Controls</name>
        <t>User agents SHOULD provide users with a mechanism for managing the cookies
stored in the cookie store. For example, a user agent might let users delete
all cookies received during a specified time period or all the cookies related
to a particular domain. In addition, many user agents include a user interface
element that lets users examine the cookies stored in their cookie store.</t>
        <t>User agents SHOULD provide users with a mechanism for disabling cookies. When
cookies are disabled, the user agent MUST NOT include a Cookie header field in
outbound HTTP requests and the user agent MUST NOT process Set-Cookie header fields
in inbound HTTP responses.</t>
        <t>User agents MAY offer a way to change the cookie policy (see
<xref target="cookie-policy"/>).</t>
        <t>User agents MAY provide users the option of preventing persistent storage of
cookies across sessions. When configured thusly, user agents MUST treat all
received cookies as if the persistent-flag were set to false. Some popular
user agents expose this functionality via "private browsing" mode
<xref target="Aggarwal2010"/>.</t>
      </section>
      <section anchor="expiration-dates">
        <name>Expiration Dates</name>
        <t>Although servers can set the expiration date for cookies to the distant future,
most user agents do not actually retain cookies for multiple decades. Rather
than choosing gratuitously long expiration periods, servers SHOULD promote user
privacy by selecting reasonable cookie expiration periods based on the purpose
of the cookie. For example, a typical session identifier might reasonably be
set to expire in two weeks.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="overview-1">
        <name>Overview</name>
        <t>Cookies have a number of security pitfalls. This section overviews a few of the
more salient issues.</t>
        <t>In particular, cookies encourage developers to rely on ambient authority for
authentication, often becoming vulnerable to attacks such as cross-site request
forgery <xref target="CSRF"/>. Also, when storing session identifiers in cookies, developers
often create session fixation vulnerabilities.</t>
        <t>Transport-layer encryption, such as that employed in HTTPS, is insufficient to
prevent a network attacker from obtaining or altering a victim's cookies because
the cookie protocol itself has various vulnerabilities (see "Weak Confidentiality"
and "Weak Integrity", below). In addition, by default, cookies do not provide
confidentiality or integrity from network attackers, even when used in conjunction
with HTTPS.</t>
      </section>
      <section anchor="ambient-authority">
        <name>Ambient Authority</name>
        <t>A server that uses cookies to authenticate users can suffer security
vulnerabilities because some user agents let remote parties issue HTTP requests
from the user agent (e.g., via HTTP redirects or HTML forms). When issuing
those requests, user agents attach cookies even if the remote party does not
know the contents of the cookies, potentially letting the remote party exercise
authority at an unwary server.</t>
        <t>Although this security concern goes by a number of names (e.g., cross-site
request forgery, confused deputy), the issue stems from cookies being a form of
ambient authority. Cookies encourage server operators to separate designation
(in the form of URLs) from authorization (in the form of cookies).
Consequently, the user agent might supply the authorization for a resource
designated by the attacker, possibly causing the server or its clients to
undertake actions designated by the attacker as though they were authorized by
the user.</t>
        <t>Instead of using cookies for authorization, server operators might wish to
consider entangling designation and authorization by treating URLs as
capabilities. Instead of storing secrets in cookies, this approach stores
secrets in URLs, requiring the remote entity to supply the secret itself.
Although this approach is not a panacea, judicious application of these
principles can lead to more robust security.</t>
      </section>
      <section anchor="clear-text">
        <name>Clear Text</name>
        <t>Unless sent over a secure channel (such as TLS), the information in the Cookie
and Set-Cookie header fields is transmitted in the clear.</t>
        <ol spacing="normal" type="1"><li>
            <t>All sensitive information conveyed in these header fields is exposed to an
eavesdropper.</t>
          </li>
          <li>
            <t>A malicious intermediary could alter the header fields as they travel in either
direction, with unpredictable results.</t>
          </li>
          <li>
            <t>A malicious client could alter the Cookie header fields before transmission,
with unpredictable results.</t>
          </li>
        </ol>
        <t>Servers SHOULD encrypt and sign the contents of cookies (using whatever format
the server desires) when transmitting them to the user agent (even when sending
the cookies over a secure channel). However, encrypting and signing cookie
contents does not prevent an attacker from transplanting a cookie from one user
agent to another or from replaying the cookie at a later time.</t>
        <t>In addition to encrypting and signing the contents of every cookie, servers that
require a higher level of security SHOULD use the Cookie and Set-Cookie
header fields only over a secure channel. When using cookies over a secure channel,
servers SHOULD set the Secure attribute (see <xref target="attribute-secure"/>) for every
cookie. If a server does not set the Secure attribute, the protection
provided by the secure channel will be largely moot.</t>
        <t>For example, consider a webmail server that stores a session identifier in a
cookie and is typically accessed over HTTPS. If the server does not set the
Secure attribute on its cookies, an active network attacker can intercept any
outbound HTTP request from the user agent and redirect that request to the
webmail server over HTTP. Even if the webmail server is not listening for HTTP
connections, the user agent will still include cookies in the request. The
active network attacker can intercept these cookies, replay them against the
server, and learn the contents of the user's email. If, instead, the server had
set the Secure attribute on its cookies, the user agent would not have
included the cookies in the clear-text request.</t>
      </section>
      <section anchor="session-identifiers">
        <name>Session Identifiers</name>
        <t>Instead of storing session information directly in a cookie (where it might be
exposed to or replayed by an attacker), servers commonly store a nonce (or
"session identifier") in a cookie. When the server receives an HTTP request
with a nonce, the server can look up state information associated with the
cookie using the nonce as a key.</t>
        <t>Using session identifier cookies limits the damage an attacker can cause if the
attacker learns the contents of a cookie because the nonce is useful only for
interacting with the server (unlike non-nonce cookie content, which might itself
be sensitive). Furthermore, using a single nonce prevents an attacker from
"splicing" together cookie content from two interactions with the server, which
could cause the server to behave unexpectedly.</t>
        <t>Using session identifiers is not without risk. For example, the server SHOULD
take care to avoid "session fixation" vulnerabilities. A session fixation attack
proceeds in three steps. First, the attacker transplants a session identifier
from his or her user agent to the victim's user agent. Second, the victim uses
that session identifier to interact with the server, possibly imbuing the
session identifier with the user's credentials or confidential information.
Third, the attacker uses the session identifier to interact with server
directly, possibly obtaining the user's authority or confidential information.</t>
      </section>
      <section anchor="weak-confidentiality">
        <name>Weak Confidentiality</name>
        <t>Cookies do not provide isolation by port. If a cookie is readable by a service
running on one port, the cookie is also readable by a service running on another
port of the same server. If a cookie is writable by a service on one port, the
cookie is also writable by a service running on another port of the same server.
For this reason, servers SHOULD NOT both run mutually distrusting services on
different ports of the same host and use cookies to store security-sensitive
information.</t>
        <t>Cookies do not provide isolation by scheme. Although most commonly used with
the http and https schemes, the cookies for a given host might also be
available to other schemes, such as ftp and gopher. Although this lack of
isolation by scheme is most apparent in non-HTTP APIs that permit access to
cookies (e.g., HTML's document.cookie API), the lack of isolation by scheme
is actually present in requirements for processing cookies themselves (e.g.,
consider retrieving a URI with the gopher scheme via HTTP).</t>
        <t>Cookies do not always provide isolation by path. Although the network-level
protocol does not send cookies stored for one path to another, some user
agents expose cookies via non-HTTP APIs, such as HTML's document.cookie API.
Because some of these user agents (e.g., web browsers) do not isolate resources
received from different paths, a resource retrieved from one path might be able
to access cookies stored for another path.</t>
      </section>
      <section anchor="weak-integrity">
        <name>Weak Integrity</name>
        <t>Cookies do not provide integrity guarantees for sibling domains (and their
subdomains). For example, consider foo.site.example and bar.site.example. The
foo.site.example server can set a cookie with a Domain attribute of
"site.example" (possibly overwriting an existing "site.example" cookie set by
bar.site.example), and the user agent will include that cookie in HTTP requests
to bar.site.example. In the worst case, bar.site.example will be unable to
distinguish this cookie from a cookie it set itself. The foo.site.example
server might be able to leverage this ability to mount an attack against
bar.site.example.</t>
        <t>Even though the Set-Cookie header field supports the Path attribute, the Path
attribute does not provide any integrity protection because the user agent
will accept an arbitrary Path attribute in a Set-Cookie header field. For
example, an HTTP response to a request for http://site.example/foo/bar can set
a cookie with a Path attribute of "/qux". Consequently, servers SHOULD NOT
both run mutually distrusting services on different paths of the same host and
use cookies to store security-sensitive information.</t>
        <t>An active network attacker can also inject cookies into the Cookie header field
sent to https://site.example/ by impersonating a response from
http://site.example/ and injecting a Set-Cookie header field. The HTTPS server
at site.example will be unable to distinguish these cookies from cookies that
it set itself in an HTTPS response. An active network attacker might be able
to leverage this ability to mount an attack against site.example even if
site.example uses HTTPS exclusively.</t>
        <t>Servers can partially mitigate these attacks by encrypting and signing the
contents of their cookies, or by naming the cookie with the <tt>__Secure-</tt> prefix.
However, using cryptography does not mitigate the issue completely because an
attacker can replay a cookie he or she received from the authentic site.example
server in the user's session, with unpredictable results.</t>
        <t>Finally, an attacker might be able to force the user agent to delete cookies by
storing a large number of cookies. Once the user agent reaches its storage
limit, the user agent will be forced to evict some cookies. Servers SHOULD NOT
rely upon user agents retaining cookies.</t>
      </section>
      <section anchor="reliance-on-dns">
        <name>Reliance on DNS</name>
        <t>Cookies rely upon the Domain Name System (DNS) for security. If the DNS is
partially or fully compromised, the cookie protocol might fail to provide the
security properties required by applications.</t>
      </section>
      <section anchor="samesite-cookies">
        <name>SameSite Cookies</name>
        <section anchor="defense-in-depth">
          <name>Defense in depth</name>
          <t>"SameSite" cookies offer a robust defense against CSRF attack when deployed in
strict mode, and when supported by the client. It is, however, prudent to ensure
that this designation is not the extent of a site's defense against CSRF, as
same-site navigations and submissions can certainly be executed in conjunction
with other attack vectors such as cross-site scripting or abuse of page
redirections.</t>
          <t>Understanding how and when a request is considered same-site is also important
in order to properly design a site for SameSite cookies. For example, if a
cross-site top-level request is made to a sensitive page that request will be
considered cross-site and <tt>SameSite=Strict</tt> cookies won't be sent; that page's
sub-resources requests, however, are same-site and would receive <tt>SameSite=Strict</tt>
cookies. Sites can avoid inadvertently allowing access to these sub-resources
by returning an error for the initial page request if it doesn't include the
appropriate cookies.</t>
          <t>Developers are strongly encouraged to deploy the usual server-side defenses
(CSRF tokens, ensuring that "safe" HTTP methods are idempotent, etc) to mitigate
the risk more fully.</t>
          <t>Additionally, client-side techniques such as those described in
<xref target="app-isolation"/> may also prove effective against CSRF, and are certainly worth
exploring in combination with "SameSite" cookies.</t>
        </section>
        <section anchor="top-level-navigations">
          <name>Top-level Navigations</name>
          <t>Setting the <tt>SameSite</tt> attribute in "strict" mode provides robust defense in
depth against CSRF attacks, but has the potential to confuse users unless sites'
developers carefully ensure that their cookie-based session management systems
deal reasonably well with top-level navigations.</t>
          <t>Consider the scenario in which a user reads their email at MegaCorp Inc's
webmail provider <tt>https://site.example/</tt>. They might expect that clicking on an
emailed link to <tt>https://projects.example/secret/project</tt> would show them the
secret project that they're authorized to see, but if <tt>https://projects.example</tt>
has marked their session cookies as <tt>SameSite=Strict</tt>, then this cross-site
navigation won't send them along with the request. <tt>https://projects.example</tt>
will render a 404 error to avoid leaking secret information, and the user will
be quite confused.</t>
          <t>Developers can avoid this confusion by adopting a session management system that
relies on not one, but two cookies: one conceptually granting "read" access,
another granting "write" access. The latter could be marked as <tt>SameSite=Strict</tt>,
and its absence would prompt a reauthentication step before executing any
non-idempotent action. The former could be marked as <tt>SameSite=Lax</tt>, in
order to allow users access to data via top-level navigation, or
<tt>SameSite=None</tt>, to permit access in all contexts (including cross-site
embedded contexts).</t>
        </section>
        <section anchor="mashups-and-widgets">
          <name>Mashups and Widgets</name>
          <t>The <tt>Lax</tt> and <tt>Strict</tt> values for the <tt>SameSite</tt> attribute are inappropriate
for some important use-cases. In particular, note that content intended for
embedding in cross-site contexts (social networking widgets or commenting
services, for instance) will not have access to same-site cookies. Cookies
which are required in these situations should be marked with <tt>SameSite=None</tt>
to allow access in cross-site contexts.</t>
          <t>Likewise, some forms of Single-Sign-On might require cookie-based authentication
in a cross-site context; these mechanisms will not function as intended with
same-site cookies and will also require <tt>SameSite=None</tt>.</t>
        </section>
        <section anchor="server-controlled">
          <name>Server-controlled</name>
          <t>SameSite cookies in and of themselves don't do anything to address the
general privacy concerns outlined in <xref section="7.1" sectionFormat="of" target="RFC6265"/>. The "SameSite"
attribute is set by the server, and serves to mitigate the risk of certain kinds
of attacks that the server is worried about. The user is not involved in this
decision. Moreover, a number of side-channels exist which could allow a server
to link distinct requests even in the absence of cookies (for example, connection
and/or socket pooling between same-site and cross-site requests).</t>
        </section>
        <section anchor="reload-navigations">
          <name>Reload navigations</name>
          <t>Requests issued for reloads triggered through user interface elements (such as a
refresh button on a toolbar) are same-site only if the reloaded document was
originally navigated to via a same-site request. This differs from the handling
of other reload navigations, which are always same-site if top-level, since the
source navigable's active document is precisely the document being
reloaded.</t>
          <t>This special handling of reloads triggered through a user interface element
avoids sending <tt>SameSite</tt> cookies on user-initiated reloads if they were
withheld on the original navigation (i.e., if the initial navigation were
cross-site). If the reload navigation were instead considered same-site, and
sent all the initially withheld <tt>SameSite</tt> cookies, the security benefits of
withholding the cookies in the first place would be nullified. This is
especially important given that the absence of <tt>SameSite</tt> cookies withheld on a
cross-site navigation request may lead to visible site breakage, prompting the
user to trigger a reload.</t>
          <t>For example, suppose the user clicks on a link from <tt>https://attacker.example/</tt>
to <tt>https://victim.example/</tt>. This is a cross-site request, so <tt>SameSite=Strict</tt>
cookies are withheld. Suppose this causes <tt>https://victim.example/</tt> to appear
broken, because the site only displays its sensitive content if a particular
<tt>SameSite</tt> cookie is present in the request. The user, frustrated by the
unexpectedly broken site, presses refresh on their browser's toolbar. To now
consider the reload request same-site and send the initially withheld <tt>SameSite</tt>
cookie would defeat the purpose of withholding it in the first place, as the
reload navigation triggered through the user interface may replay the original
(potentially malicious) request. Thus, the reload request should be considered
cross-site, like the request that initially navigated to the page.</t>
          <t>Because requests issued for, non-user initiated, reloads attach all SameSite
cookies, developers should be careful and thoughtful about when to initiate a
reload in order to avoid a CSRF attack. For example, the page could only
initiate a reload if a CSRF token is present on the initial request.</t>
        </section>
        <section anchor="unsafe-top-level-requests">
          <name>Top-level requests with "unsafe" methods</name>
          <t>The "Lax" enforcement mode described in <xref target="strict-lax"/> allows a cookie to be
sent with a cross-site HTTP request if and only if it is a top-level navigation
with a "safe" HTTP method. Implementation experience shows that this is
difficult to apply as the default behavior, as some sites may rely on cookies
not explicitly specifying a <tt>SameSite</tt> attribute being included on top-level
cross-site requests with "unsafe" HTTP methods (as was the case prior to the
introduction of the <tt>SameSite</tt> attribute).</t>
          <t>For example, the concluding step of a login flow may involve a cross-site top-level
<tt>POST</tt> request to an endpoint; this endpoint expects a recently created cookie
containing transactional state information, necessary to securely complete the
login. For such a cookie, "Lax" enforcement is not appropriate, as it would
cause the cookie to be excluded due to the unsafe HTTP request method,
resulting in an unrecoverable failure of the whole login flow.</t>
          <t>The "Lax-allowing-unsafe" enforcement mode described in <xref target="lax-allowing-unsafe"/>
retains some of the protections of "Lax" enforcement (as compared to "None")
while still allowing recently created cookies to be sent cross-site with unsafe
top-level requests.</t>
          <t>As a more permissive variant of "Lax" mode, "Lax-allowing-unsafe" mode
necessarily provides fewer protections against CSRF. Ultimately, the provision
of such an enforcement mode should be seen as a temporary, transitional measure
to ease adoption of "Lax" enforcement by default.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-cookie">
        <name>Cookie</name>
        <t>The HTTP Field Name Registry (see <xref target="HttpFieldNameRegistry"/>) needs to be
updated with the following registration:</t>
        <dl>
          <dt>Header field name:</dt>
          <dd>
            <t>Cookie</t>
          </dd>
          <dt>Applicable protocol:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>standard</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document:</dt>
          <dd>
            <t>this specification (<xref target="cookie"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-set-cookie">
        <name>Set-Cookie</name>
        <t>The permanent message header field registry (see <xref target="HttpFieldNameRegistry"/>) needs to be
updated with the following registration:</t>
        <dl>
          <dt>Header field name:</dt>
          <dd>
            <t>Set-Cookie</t>
          </dd>
          <dt>Applicable protocol:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>standard</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document:</dt>
          <dd>
            <t>this specification (<xref target="set-cookie"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="cookie-attribute-registry">
        <name>Cookie Attribute Registry</name>
        <t>IANA is requested to create the "Cookie Attribute" registry, defining the
name space of attribute used to control cookies' behavior.
The registry should be maintained at
<eref target="https://www.iana.org/assignments/cookie-attribute-names">https://www.iana.org/assignments/cookie-attribute-names</eref>.</t>
        <section anchor="procedure">
          <name>Procedure</name>
          <t>Each registered attribute name is associated with a description, and a
reference detailing how the attribute is to be processed and stored.</t>
          <t>New registrations happen on a "RFC Required" basis (see Section 4.7 of
<xref target="RFC8126"/>). The attribute to be registered MUST match the <tt>extension-av</tt>
syntax defined in <xref target="abnf-syntax"/>. Note that attribute names are generally
defined in CamelCase, but technically accepted case-insensitively.</t>
        </section>
        <section anchor="registration">
          <name>Registration</name>
          <t>The "Cookie Attribute Registry" should be created with the registrations below:</t>
          <table>
            <thead>
              <tr>
                <th align="right">Name</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">Domain</td>
                <td align="left">
                  <xref target="attribute-domain"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Expires</td>
                <td align="left">
                  <xref target="attribute-expires"/> of this document</td>
              </tr>
              <tr>
                <td align="right">HttpOnly</td>
                <td align="left">
                  <xref target="attribute-httponly"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Max-Age</td>
                <td align="left">
                  <xref target="attribute-max-age"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Path</td>
                <td align="left">
                  <xref target="attribute-path"/> of this document</td>
              </tr>
              <tr>
                <td align="right">SameSite</td>
                <td align="left">
                  <xref target="attribute-samesite"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Secure</td>
                <td align="left">
                  <xref target="attribute-secure"/> of this document</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9110" to="HTTP"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1123">
          <front>
            <title>Requirements for Internet Hosts - Application and Support</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1123"/>
          <seriesInfo name="DOI" value="10.17487/RFC1123"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4790">
          <front>
            <title>Internet Application Protocol Collation Registry</title>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>Many Internet application protocols include string-based lookup, searching, or sorting operations. However, the problem space for searching and sorting international strings is large, not fully explored, and is outside the area of expertise for the Internet Engineering Task Force (IETF). Rather than attempt to solve such a large problem, this specification creates an abstraction framework so that application protocols can precisely identify a comparison function, and the repertoire of comparison functions can be extended in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4790"/>
          <seriesInfo name="DOI" value="10.17487/RFC4790"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="USASCII">
          <front>
            <title>Coded Character Set -- 7-bit American Standard Code for Information Interchange</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="1986"/>
          </front>
          <seriesInfo name="ANSI" value="X3.4"/>
        </reference>
        <reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
          <front>
            <title>Fetch</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization>Mozilla</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HTML" target="https://html.spec.whatwg.org/">
          <front>
            <title>HTML</title>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization>Google, Inc.</organization>
            </author>
            <author initials="S." surname="Pieters" fullname="Simon Pieters">
              <organization>Opera</organization>
            </author>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization>Mozilla</organization>
            </author>
            <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
              <organization>Opera</organization>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization>Google, Inc.</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DOM-DOCUMENT-COOKIE" target="https://html.spec.whatwg.org/#dom-document-cookie">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="May" day="18"/>
          </front>
        </reference>
        <reference anchor="SAMESITE" target="https://html.spec.whatwg.org/#same-site">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC7034">
          <front>
            <title>HTTP Header Field X-Frame-Options</title>
            <author fullname="D. Ross" initials="D." surname="Ross"/>
            <author fullname="T. Gondrom" initials="T." surname="Gondrom"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>To improve the protection of web applications against clickjacking, this document describes the X-Frame-Options HTTP header field, which declares a policy, communicated from the server to the client browser, regarding whether the browser may display the transmitted content in frames that are part of other web pages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7034"/>
          <seriesInfo name="DOI" value="10.17487/RFC7034"/>
        </reference>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="CSRF" target="http://portal.acm.org/citation.cfm?id=1455770.1455782">
          <front>
            <title>Robust Defenses for Cross-Site Request Forgery</title>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="J." surname="Mitchell">
              <organization/>
            </author>
            <date year="2008" month="October"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/1455770.1455782"/>
          <seriesInfo name="ISBN" value="978-1-59593-810-7"/>
          <seriesInfo name="ACM" value="CCS '08: Proceedings of the 15th ACM conference on Computer and communications security (pages 75-88)"/>
        </reference>
        <reference anchor="Aggarwal2010" target="http://www.usenix.org/events/sec10/tech/full_papers/Aggarwal.pdf">
          <front>
            <title>An Analysis of Private Browsing Modes in Modern Browsers</title>
            <author initials="G." surname="Aggarwal">
              <organization/>
            </author>
            <author initials="E." surname="Burzstein">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="D." surname="Boneh">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="app-isolation" target="http://www.collinjackson.com/research/papers/appisolation.pdf">
          <front>
            <title>App Isolation - Get the Security of Multiple Browsers with Just One</title>
            <author initials="E." surname="Chen" fullname="Eric Y. Chen">
              <organization/>
            </author>
            <author initials="J." surname="Bau" fullname="Jason Bau">
              <organization/>
            </author>
            <author initials="C." surname="Reis" fullname="Charles Reis">
              <organization/>
            </author>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson" fullname="Collin Jackson">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
        </reference>
        <reference anchor="prerendering" target="https://www.chromium.org/developers/design-documents/prerender">
          <front>
            <title>Chrome Prerendering</title>
            <author initials="C." surname="Bentzel" fullname="Chris Bentzel">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PSL" target="https://publicsuffix.org/list/">
          <front>
            <title>Public Suffix List</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HttpFieldNameRegistry" target="https://www.iana.org/assignments/http-fields/">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SERVICE-WORKERS" target="https://www.w3.org/TR/service-workers/">
          <front>
            <title>Service Workers</title>
            <author initials="J." surname="Archibald" fullname="Jake Archibald">
              <organization/>
            </author>
            <author initials="M." surname="Kruisselbrink" fullname="Marijn Kruisselbrink">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2109">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="D. Kristol" initials="D." surname="Kristol"/>
            <author fullname="L. Montulli" initials="L." surname="Montulli"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document specifies a way to create a stateful session with HTTP requests and responses. It describes two new headers, Cookie and Set- Cookie, which carry state information between participating origin servers and user agents. The method described here differs from Netscape's Cookie proposal, but it can interoperate with HTTP/1.0 user agents that use Netscape's method. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2109"/>
          <seriesInfo name="DOI" value="10.17487/RFC2109"/>
        </reference>
      </references>
    </references>
    <?line 2483?>

<section anchor="changes-from-rfc-6265">
      <name>Changes from RFC 6265</name>
      <ul spacing="normal">
        <li>
          <t>Adds the same-site concept and the SameSite attribute.
(<xref target="same-site-requests"/> and <xref target="attribute-samesite"/>)</t>
        </li>
        <li>
          <t>Introduces cookie prefixes and prohibits nameless cookies from setting a
value that would mimic a cookie prefix. (<xref target="server-name-prefixes"/> and
<xref target="storage-model"/>)</t>
        </li>
        <li>
          <t>Prohibits non-secure origins from setting cookies with a <tt>Secure</tt> flag or
overwriting cookies with this flag. (<xref target="storage-model"/>)</t>
        </li>
        <li>
          <t>Limits maximum cookie size. (<xref target="storage-model"/>)</t>
        </li>
        <li>
          <t>Limits maximum values for max-age and expire. (<xref target="ua-attribute-expires"/> and <xref target="ua-attribute-max-age"/>)</t>
        </li>
        <li>
          <t>Includes the host-only-flag as part of a cookie's uniqueness computation.
(<xref target="storage-model"/>)</t>
        </li>
        <li>
          <t>Considers potentially trustworthy origins as "secure". (<xref target="storage-model"/>)</t>
        </li>
        <li>
          <t>Improves cookie syntax
          </t>
          <ul spacing="normal">
            <li>
              <t>Treats Set-Cookie: token as creating the cookie ("", "token").
(<xref target="set-cookie"/>)</t>
            </li>
            <li>
              <t>Rejects cookies without a name nor value. (<xref target="storage-model"/>)</t>
            </li>
            <li>
              <t>Specifies how to serialize a nameless/valueless cookie. (<xref target="retrieval-algorithm"/>)</t>
            </li>
            <li>
              <t>Adjusts ABNF for cookie-pair and the Cookie header production to allow
for spaces. (<xref target="abnf-syntax"/>)</t>
            </li>
            <li>
              <t>Explicitly handle control characters. (<xref target="set-cookie"/> and <xref target="storage-model"/>)</t>
            </li>
            <li>
              <t>Specifies how to handle empty domain attributes. (<xref target="storage-model"/>)</t>
            </li>
            <li>
              <t>Requires ASCII characters for the domain attribute. (<xref target="storage-model"/>)</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Refactors cookie retrieval algorithm to support non-HTTP APIs. (<xref target="non-http"/>)</t>
        </li>
        <li>
          <t>Specifies that the Set-Cookie line should not be decoded. (<xref target="set-cookie"/>)</t>
        </li>
        <li>
          <t>Adds an advisory section to assist implementers in deciding which requirements
to implement. (<xref target="implementation-advisory"/>)</t>
        </li>
        <li>
          <t>Advises against sending invalid cookies due to public suffix list changes.
(<xref target="retrieval-algorithm"/>)</t>
        </li>
        <li>
          <t>Removes the single cookie header requirement. (<xref target="cookie"/>)</t>
        </li>
        <li>
          <t>Address errata 3444 by updating the path-value andextension-av grammar,
errata 4148 by updating the day-of-month, year, and time grammar, and errata
3663 by adding the requested note. (<xref target="sane-set-cookie"/> and <xref target="cookie-path"/>)</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>RFC 6265 was written by Adam Barth. This document is an update of RFC 6265,
adding features and aligning the specification with the reality of today's
deployments. Here, we're standing upon the shoulders of a giant since the
majority of the text is still Adam's.</t>
      <t>Thank you to both Lily Chen and Steven Englehardt, editors emeritus, for their
significant contributions improving this draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9y963LbSJYw+D+fAkHHrKUKkpZku8p2TfU3KlmuUrdvnyVP
zcTERAskQQltEmADoGSWw/M035vsi+25Zp4EQEm2q3YjtiK6LZJAXk6ePPfL
aDRyTd4ssmfJ4KgsP+RZ/Sz59ezsbXLapE2WvEqL9CJbZkWTvMqml2mR18uB
m5XTIl3CO7MqnTejPGvmo8umWU3yelTNp98ffP8Y/9x/4ur1ZJnXdV4WzWYF
L5wcn71wMxj5WfLp+eHZ8Wc3hQ8XZbV5ltTNzJWTulxkDa4CR3EuX1XPklWV
PX74w5Ozal03B3t7T/cOXFpl6bPkcLVa5DACjF8naTFL3mXpYnSWLzN3XVYf
LqpyveL9uFX+LPmvppwOE/i/vJjBloZJXVZNlc1r+GuzlD+aKp/CT9NyuUrl
D9w//JQXi7zI/tvVDUz193RRFrCNTVYn9/7u6mVaNX//57qktRelc1dZsc6e
uSSxq0gShsNvsLq8uEh+wd/g28sSwYkwrJ89eID/Xl+My+riAfy2TPPFs8QD
eXR98W/XD/FH+C2tppfhvUVeN/WYf3xwCD/lV1n94O16AkB6YAfAYatsVYZX
L/Lmcj0Zw2ZldvpnlH1ssgKPr36wSCfZon4gh+v4hREc7job0W98ZPibS9fN
ZVk9cyOYJy8AIKfj5GfY7yKr4BvGndMmAxCZr6sS0TCb5U2JH2EPgG6/0+E+
S34pS3gsefnyCH7KGCQTfvXfLug3XHuY8NU4+S2rGz/bq/xDpt988UTLD9d1
Y6dJknWVB+AtYfBrGJtPzK/hr7CGfAG4Ynb91/KysN/euBZE72yYnBTTsJZr
efffUvyRVuOKslrCK1eEbu9eHO3vPXykf+4fPJQ/D/b3n8qfj354uid/Pj7w
zz5+4r/9/tFj/fbJ/sH38ufT/X16AP6b5fVqkW48Wr8/PTw9OjnhXwNFmWWz
5OgyreAmZVVymjXJaJT8MJrkTXK4zOCmpQVSmmKWVvAgPJ7Mywo2POcdlQX8
DW8i5bnIBjR4Da9ldQ6PyFKSw9enJ8+S/3g4fkRfMHnZf/rke/qouMjPtgCs
a3hNX6QLv5gaJq5hH+smgzdfHJ8d/Sp7S6uLrAlnP8+a6eW4XmXT8fVl2oRr
68HwAp/oLGUkCyJMORwnV7CKvwEOZVVWyE+MMYdFkfX9Gu/kVfl7vlik8Nuv
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
AhevI7OuAQA=

-->

</rfc>
