<?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.18 (Ruby 3.3.3) -->
<?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-15" category="std" consensus="true" obsoletes="6265" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title>Cookies: HTTP State Management Mechanism</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-15"/>
    <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 224?>

<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 234?>

<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. 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       = 1*cookie-octet
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

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 [RFC9110], 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 one obtained by applying the "ToASCII" operation
defined in <xref section="4" sectionFormat="of" target="RFC3490"/>.</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="RFC2818"/>).</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), or
to a "punycode label" (a label resulting from the "ToASCII" conversion in
<xref section="4" sectionFormat="of" target="RFC3490"/>), as appropriate (see <xref target="idna-migration"/> of this
specification).</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 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. In addition, the
algorithm below accommodates some characters that are not cookie-octets
according to the grammar in <xref target="sane-set-cookie"/>. 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 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 anchor="idna-migration">
        <name>IDNA Dependency and Migration</name>
        <t>IDNA2008 <xref target="RFC5890"/> supersedes IDNA2003 <xref target="RFC3490"/>. However, there are
differences between the two specifications, and thus there can be differences
in processing (e.g., converting) domain name labels that have been registered
under one from those registered under the other. There will be a transition
period of some time during which IDNA2003-based domain name labels will exist
in the wild. User agents SHOULD implement IDNA2008 <xref target="RFC5890"/> and MAY
implement <xref target="UTS46"/> or <xref target="RFC5895"/> in order to facilitate their IDNA transition.
If a user agent does not implement IDNA2008, the user agent MUST implement
IDNA2003 <xref target="RFC3490"/>.</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="RFC3490">
          <front>
            <title>Internationalizing Domain Names in Applications (IDNA)</title>
            <author initials="A." surname="Costello">
              <organization/>
            </author>
            <date year="2003" month="March"/>
          </front>
          <seriesInfo name="RFC" value="3490"/>
          <annotation>See <xref target="idna-migration"/> for an explanation why the normative reference to an obsoleted specification is needed.</annotation>
        </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>
        <reference anchor="SERVICE-WORKERS" target="http://www.w3.org/TR/service-workers/">
          <front>
            <title>Service Workers</title>
            <author initials="A." surname="Russell" fullname="Alex Russell">
              <organization/>
            </author>
            <author initials="J." surname="Song" fullname="Jungkee Song">
              <organization/>
            </author>
            <author initials="J." surname="Archibald" fullname="Jake Archibald">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2818">
          <front>
            <title>HTTP Over TLS</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2818"/>
          <seriesInfo name="DOI" value="10.17487/RFC2818"/>
        </reference>
        <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="RFC5895">
          <front>
            <title>Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008</title>
            <author fullname="P. Resnick" initials="P." surname="Resnick"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>In the original version of the Internationalized Domain Names in Applications (IDNA) protocol, any Unicode code points taken from user input were mapped into a set of Unicode code points that "made sense", and then encoded and passed to the domain name system (DNS). The IDNA2008 protocol (described in RFCs 5890, 5891, 5892, and 5893) presumes that the input to the protocol comes from a set of "permitted" code points, which it then encodes and passes to the DNS, but does not specify what to do with the result of user input. This document describes the actions that can be taken by an implementation between receiving user input and passing permitted code points to the new IDNA protocol. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5895"/>
          <seriesInfo name="DOI" value="10.17487/RFC5895"/>
        </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="UTS46" target="http://unicode.org/reports/tr46/">
          <front>
            <title>Unicode IDNA Compatibility Processing</title>
            <author initials="M." surname="Davis" fullname="Mark Davis">
              <organization/>
            </author>
            <author initials="M." surname="Suignard" fullname="Michel Suignard">
              <organization/>
            </author>
            <date year="2016" month="June"/>
          </front>
          <seriesInfo name="UNICODE" value="Unicode Technical Standards # 46"/>
        </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="I-D.ietf-httpbis-cookie-alone">
          <front>
            <title>Deprecate modification of 'secure' cookies from non-secure origins</title>
            <author fullname="Mike West" initials="M." surname="West">
              <organization>Google, Inc</organization>
            </author>
            <date day="5" month="September" year="2016"/>
            <abstract>
              <t>   This document updates RFC6265 by removing the ability for a non-
   secure origin to set cookies with a 'secure' flag, and to overwrite
   cookies whose 'secure' flag is set.  This deprecation improves the
   isolation between HTTP and HTTPS origins, and reduces the risk of
   malicious interference.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cookie-alone-01"/>
        </reference>
        <reference anchor="I-D.ietf-httpbis-cookie-prefixes">
          <front>
            <title>Cookie Prefixes</title>
            <author fullname="Mike West" initials="M." surname="West">
              <organization>Google, Inc</organization>
            </author>
            <date day="23" month="February" year="2016"/>
            <abstract>
              <t>   This document updates RFC6265 by adding a set of restrictions upon
   the names which may be used for cookies with specific properties.
   These restrictions enable user agents to smuggle cookie state to the
   server within the confines of the existing "Cookie" request header
   syntax, and limits the ways in which cookies may be abused in a
   conforming user agent.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cookie-prefixes-00"/>
        </reference>
        <reference anchor="I-D.ietf-httpbis-cookie-same-site">
          <front>
            <title>Same-Site Cookies</title>
            <author fullname="Mike West" initials="M." surname="West">
              <organization>Google, Inc</organization>
            </author>
            <author fullname="Mark Goodwin" initials="M." surname="Goodwin">
              <organization>Mozilla</organization>
            </author>
            <date day="20" month="June" year="2016"/>
            <abstract>
              <t>   This document updates RFC6265 by defining a "SameSite" attribute
   which allows servers to assert that a cookie ought not to be sent
   along with cross-site requests.  This assertion allows user agents to
   mitigate the risk of cross-origin information leakage, and provides
   some protection against cross-site request forgery attacks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cookie-same-site-00"/>
        </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="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 2510?>

<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:
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
hUw4CTRWY/W9e1hTSMIxNUQxRLWGIEVqSMn+Al40SorXfj48UPnM5JdFFE3R
uFo6SgcQ8Ua8uckhXmeZV1qzbhJuNcGIKSH1vi0e69CtUaJqyakJNaVSulM4
jKjTyWSdY4VnQU/XaS4SCmFL0gCanzkgXpYzi8bTfmLxsjw8SHovu6yd27Ro
VhLjk4m1BuCYeH/hPyay9sP7k6Ex33CDJhGnqX025+RwWyFTtNo03pZ8Knyd
syFkNpNlyzBq1xvnJXbjWLk6G5UOLC27EzTQwWyssIV+p8YtkPtSI+Dl45vq
f2vHOlM424Z+co7idV6Tt3CyKKcfKV/PlsifsRkbLnFezUbYVXsTUoccHam6
8fUTyYAzX9ypxDkZpi89GsYb444+MRY2PYGs2iwSU5FgTYssvmBeuWp/h8Z8
zJg2GodibRk1h+lvOdUbAT80LRP9C9qsMyTIiGdp2HmvjcuOIltonbMoncbE
mbc6YfWYAEMdQDsXoTyKe3QdfU+adxWQ/3JdJ2jjIr1RS61FfewCGaA7TD4P
VAX6CIpmMOWhm+w40QZdRakl8FKbPDROfr/MF1yT3PXOrKWs+0+d+7JRK4Eh
SzkmOcRRCuxqkYtSo5hCuVWheee0i5V1RGm5BI4L9bKfjg9stufDL18I9KbZ
+DiU1IYXHlEwNBKaN6a4OTa2QDqJuk2XwFActoqWLYIqMJGMwHUttYGIrrqY
IPURmtAVkg0LMUixaScoFyi5iJkU9y8JftfccSFQa+I5zI+5HX2gDfo5kQ13
M9lIO0RDFunFS/IVsTNrK58hW2bMO7Q9pKmCvIVCJB0K4b6DQoSWp66HQrTk
oikXSBLy+uLt69GLt0cfXh+/ORsdvX37l5Njsu+3x2pTEbrlxo8gCsGLnh63
vk170t+qvtP1PnZF9ObGJju+cbekJQ5CEqOtAt6mTkj9wkHKRQlS26EHu5Xc
AqxDE9lYWqRW1P6D25vIbhFqBOVi9RM0ElMVhoyDE19G2SqQ/ZKsd+qTwdOx
lTBen633yIalH5JjMv5pJNkPyZ0sm8Hq2ButSF918rECpnaDHnU6X2WIhnn7
Nesi6fx7FtYTZ7BlXRzsuIPU3KYN3i2OdDc5aSRWxWdIe/tYHEKasIMWPZhS
UoCTr4LFUWpTqg0qtAfnD6TCZc1lGVq7wf6WIB6SJYKn5bFkbiFtqWJkq9sE
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
FrcrVptl+C8rj96j8bIBAA==

-->

</rfc>
