<?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.29 (Ruby 3.4.4) -->
<?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-22" category="std" consensus="true" submissionType="IETF" obsoletes="6265" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>Cookies: HTTP State Management Mechanism</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-22"/>
    <author initials="S." surname="Bingler" fullname="Steven Bingler" role="editor">
      <organization/>
      <address>
        <email>bingler@chromium.org</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 223?>

<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 flaws
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 232?>

<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 flaws.
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", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Requirements phrased in the imperative as part of algorithms (such as "strip any
leading space characters" or "return false and abort this algorithm") 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 section="3" sectionFormat="of" target="RFC9110"/>).</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", "navigate", "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>. See <xref target="public-suffix-list-security"/> for security
considerations.</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 anchor="name-resolution-system">
        <name>Name Resolution System</name>
        <t>While this document does not strictly prescribe any specific name resolution
system for use with cookies it does require that the system uses only
<xref target="USASCII"/> characters or uses an ASCII-compatible encoding (ACE). As the Domain
Name System (DNS) is a typical and conventional example this document will
reference name resolution in terms of DNS.</t>
        <t>Name resolution systems that directly expose non-ASCII characters, such as
Unicode, are out of scope of this document.</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 and intermediaries MUST NOT combine multiple Set-Cookie header
fields into a single header field. The usual mechanism for combining 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 combining.</t>
      <t>For example,</t>
      <artwork><![CDATA[
Set-Cookie: a=b;path=/c,d=e
]]></artwork>
      <t>is ambiguous. It could be intended as two cookies, a=b and d=e, or a single
cookie with a path of /c,d=e.</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>
      <t>Note: A cookie's octets MUST be processed as <xref target="USASCII"/> characters. While
it's possible a non-HTTP API could pass a set-cookie-string with one or more
non-<xref target="USASCII"/> characters, no attempt should be made to interpret these octets
as anything other than <xref target="USASCII"/> characters.</t>
      <section anchor="examples">
        <name>Examples</name>
        <t>Using the Set-Cookie header field, a server can send the user agent a short string
in an HTTP response that the user agent will return in future HTTP requests that
are within the scope of the cookie. For example, the server can send the user
agent a "session identifier" named SID with the value 31d4d96e407aad42. The
user agent then returns the session identifier in subsequent requests.</t>
        <sourcecode type="example"><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

Set-Cookie: lang=en-US; Expires=Wed, 09 Jun 2026 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 Header</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 conforming to
this profile MUST NOT send Set-Cookie header fields that deviate from the following
grammar:</t>
          <sourcecode type="abnf"><![CDATA[
set-cookie        = set-cookie-string
set-cookie-string = BWS cookie-pair *( BWS ";" OWS cookie-av )
cookie-pair       = cookie-name BWS "=" BWS cookie-value
cookie-name       = token
cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                      ; US-ASCII characters excluding CTLs,
                      ; whitespace, DQUOTE, comma, semicolon,
                      ; and backslash
token             = <token, defined in [HTTP], Section 5.6.2>

cookie-av         = expires-av / max-age-av / domain-av /
                    path-av / secure-av / httponly-av /
                    samesite-av / extension-av
expires-av        = "Expires" BWS "=" BWS sane-cookie-date
sane-cookie-date  =
    <IMF-fixdate, defined in [HTTP], Section 5.6.7>
max-age-av        = "Max-Age" BWS "=" BWS non-zero-digit *DIGIT
non-zero-digit    = %x31-39
                      ; digits 1 through 9
domain-av         = "Domain" BWS "=" BWS domain-value
domain-value      = <subdomain>
                      ; see details below
path-av           = "Path" BWS "=" BWS path-value
path-value        = *av-octet
secure-av         = "Secure"
httponly-av       = "HttpOnly"
samesite-av       = "SameSite" BWS "=" BWS samesite-value
samesite-value    = "Strict" / "Lax" / "None"
extension-av      = 1*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 MUST 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>Per the grammar above, extension-av MUST NOT contain leading or trailing WSP
characters as they will be interpreted as BWS and removed.</t>
          <t>The domain-value is a subdomain as defined by <xref section="3.5" sectionFormat="of" target="RFC1034"/>, and
as enhanced by <xref section="2.1" sectionFormat="of" target="RFC1123"/>. Thus, domain-value is a string of
<xref target="USASCII"/> characters, such as an "A-label" as defined in
<xref section="2.3.2.1" sectionFormat="of" target="RFC5890"/>.</t>
          <t>The portions of the set-cookie-string produced by the cookie-av term are
known as attributes. To maximize compatibility with user agents, servers MUST
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 MUST 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>
            <t>The cookie's lifetime is based on the user agent's clock which may differ from
the server's clock. Servers MUST NOT depend on cookies being evicted exactly at
the specified date and time of the server's clock.</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. 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="RFC8446"/>) <xref target="RFC9110"/>).</t>
          </section>
          <section anchor="attribute-httponly">
            <name>The HttpOnly Attribute</name>
            <t>The HttpOnly attribute limits the scope of the cookie to HTTP requests. In
particular, the attribute instructs the user agent to omit the cookie when
providing access to cookies via non-HTTP APIs.</t>
            <t>Note that the HttpOnly attribute is independent of the Secure attribute: a
cookie can have both the HttpOnly and the Secure attribute.</t>
          </section>
          <section anchor="attribute-samesite">
            <name>The SameSite Attribute</name>
            <t>The "SameSite" attribute limits the scope of the cookie such that it will only
be attached to requests if those requests are same-site, as defined by the
algorithm in <xref target="same-site-requests"/>. For example, requests for
<tt>https://site.example/sekrit-image</tt> will attach same-site cookies if and only if
initiated from a context whose "site for cookies" is an origin with a scheme and
registered domain of "https" and "site.example" respectively.</t>
            <t>If the "SameSite" attribute's value is "Strict", the cookie will only be sent
along with "same-site" requests. If the value is "Lax", the cookie will be sent
with same-site requests, and with "cross-site" top-level navigations, as
described in <xref target="strict-lax"/>. If the value is "None", the cookie will be sent
with same-site and cross-site requests. If the "SameSite" attribute's value is
something other than these three known keywords, the attribute's value will be
subject to a default enforcement mode that is equivalent to "Lax". If a user
agent uses "Lax-allowing-unsafe" enforcement (See <xref target="lax-allowing-unsafe"/>) then
this default enforcement mode will instead be equivalent to "Lax-allowing-unsafe".</t>
            <t>The "SameSite" attribute affects cookie creation as well as delivery. Cookies
which assert "SameSite=Lax" or "SameSite=Strict" cannot be set in responses to
cross-site subresource requests, or cross-site nested navigations. They can be
set along with any top-level navigation, cross-site or otherwise.</t>
          </section>
        </section>
        <section anchor="server-name-prefixes">
          <name>Cookie Name Prefixes</name>
          <t><xref target="weak-confidentiality"/> and <xref target="weak-integrity"/> of this document spell out some of the drawbacks of cookies'
historical implementation. In particular, it is impossible for a server to have
confidence that a given cookie was set with a particular set of attributes. In
order to provide such confidence in a backwards-compatible way, two common sets
of requirements can be inferred from the first few characters of the cookie's
name.</t>
          <t>The user agent requirements for the prefixes described below are detailed in
<xref target="ua-name-prefixes"/>.</t>
          <t>To maximize compatibility with user agents servers SHOULD use prefixes as
described below.</t>
          <section anchor="the-secure-prefix">
            <name>The "__Secure-" Prefix</name>
            <t>If a cookie's name begins with a case-sensitive match for the string
<tt>__Secure-</tt>, then the cookie will have been set with a <tt>Secure</tt> attribute.</t>
            <t>For example, the following <tt>Set-Cookie</tt> header field would be rejected by a conformant
user agent, as it does not have a <tt>Secure</tt> attribute.</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example
]]></sourcecode>
            <t>Whereas the following <tt>Set-Cookie</tt> header field would be accepted if set from a secure origin
(e.g. "https://site.example/"), and rejected otherwise:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example; Secure
]]></sourcecode>
          </section>
          <section anchor="the-host-prefix">
            <name>The "__Host-" Prefix</name>
            <t>If a cookie's name begins with a case-sensitive match for the string
<tt>__Host-</tt>, then the cookie will have been set with a <tt>Secure</tt> attribute, a
<tt>Path</tt> attribute with a value of <tt>/</tt>, and no <tt>Domain</tt> attribute.</t>
            <t>This combination yields a cookie that hews as closely as a cookie can to
treating the origin as a security boundary. The lack of a <tt>Domain</tt> attribute
ensures that the cookie's <tt>host-only-flag</tt> is true, locking the cookie to a
particular host, rather than allowing it to span subdomains. Setting the <tt>Path</tt>
to <tt>/</tt> means that the cookie is effective for the entire host, and won't be
overridden for specific paths. The <tt>Secure</tt> attribute ensures that the cookie
is unaltered by non-secure origins, and won't span protocols.</t>
            <t>Ports are the only piece of the origin model that <tt>__Host-</tt> cookies continue
to ignore.</t>
            <t>For example, the following cookies would always be rejected:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Host-SID=12345
Set-Cookie: __Host-SID=12345; Secure
Set-Cookie: __Host-SID=12345; Domain=site.example
Set-Cookie: __Host-SID=12345; Domain=site.example; Path=/
Set-Cookie: __Host-SID=12345; Secure; Domain=site.example; Path=/
]]></sourcecode>
            <t>While the following would be accepted if set from a secure origin (e.g.
"https://site.example/"), and rejected otherwise:</t>
            <sourcecode type="example"><![CDATA[
Set-Cookie: __Host-SID=12345; Secure; Path=/
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sane-cookie">
        <name>Cookie Header</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 8192 octets. 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 this algorithm 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 this algorithm 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>All labels must be one of U-label, A-label, or Non-Reserved LDH (NR-LDH)
label (see <xref section="2.3.1" sectionFormat="of" target="RFC5890"/>). If any label is not one of these
then abort this algorithm and fail to canonicalize the host name.</t>
            </li>
            <li>
              <t>Convert each U-label to an A-label (see <xref section="2.3.2.1" sectionFormat="of" target="RFC5890"/>).</t>
            </li>
            <li>
              <t>If any label is a Fake A-label then abort this algorithm and fail to
canonicalize the host name.</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>Note: This algorithm expects that both inputs are canonicalized.</t>
          <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. This origin, the top-level traversable's active
document's origin, is defined as the "top-level origin".</t>
          <t>For a document displayed in a top-level traversable, the document's "site for
cookies" is the top-level origin.</t>
          <t>For container documents, the origins of each of a document's ancestor
navigables' active documents must be audited 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>
          <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. The worker's "site for cookies" is the document's "site for
cookies" if the worker's origin is same-site with the document's "site for
cookies", otherwise its "site for cookies" is an origin set to an opaque
origin.</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-insensitively.</t>
        <t>Note: Cookies with different names are still considered separate by UAs. So
both <tt>__Secure-foo=bar</tt> and <tt>__secure-foo=baz</tt> can exist as distinct cookies
simultaneously and both would have the requirements of the <tt>__Secure-</tt> prefix
applied.</t>
        <t>The following are examples of <tt>Set-Cookie</tt> header fields that would be rejected
by a conformant user agent.</t>
        <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example
Set-Cookie: __secure-SID=12345; Domain=site.example
Set-Cookie: __SECURE-SID=12345; Domain=site.example
Set-Cookie: __Host-SID=12345
Set-Cookie: __host-SID=12345; Secure
Set-Cookie: __host-SID=12345; Domain=site.example
Set-Cookie: __HOST-SID=12345; Domain=site.example; Path=/
Set-Cookie: __Host-SID=12345; Secure; Domain=site.example; Path=/
Set-Cookie: __host-SID=12345; Secure; Domain=site.example; Path=/
Set-Cookie: __HOST-SID=12345; Secure; Domain=site.example; Path=/
]]></sourcecode>
        <t>Whereas the following <tt>Set-Cookie</tt> header fields would be accepted if set from
a secure origin.</t>
        <sourcecode type="example"><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=site.example; Secure
Set-Cookie: __secure-SID=12345; Domain=site.example; Secure
Set-Cookie: __SECURE-SID=12345; Domain=site.example; Secure
Set-Cookie: __Host-SID=12345; Secure; Path=/
Set-Cookie: __host-SID=12345; Secure; Path=/
Set-Cookie: __HOST-SID=12345; Secure; Path=/
]]></sourcecode>
      </section>
      <section anchor="cookie-lifetime-limits">
        <name>Cookie Lifetime Limits</name>
        <t>When processing cookies with a specified lifetime, either with the Expires or
with the Max-Age attribute, the user agent MUST limit the maximum age of the
cookie. The limit SHOULD NOT be greater than 400 days (34560000 seconds) in the
future. The RECOMMENDED limit is 400 days in the future, but the user agent MAY
adjust the limit (see <xref target="cookie-policy"/>). Expires or Max-Age attributes that
specify a lifetime longer than the limit MUST be reduced to the limit.</t>
      </section>
      <section anchor="set-cookie">
        <name>The Set-Cookie Header Field</name>
        <t>When a user agent receives a Set-Cookie header field in an HTTP response, the
user agent MAY ignore the Set-Cookie header field in its entirety
(see <xref target="ignoring-cookies"/>).</t>
        <t>If the user agent does not ignore the Set-Cookie header field in its entirety,
the user agent MUST parse the field-value of the Set-Cookie header field as a
set-cookie-string (defined below).</t>
        <t>Note: The algorithm below is more permissive than the grammar in <xref target="sane-set-cookie"/>.
For example, the algorithm allows cookie-name to be comprised of cookie-octets
instead of being a token as specified in <xref target="sane-set-cookie"/> and the algorithm
accommodates some characters that are not cookie-octets according to the
grammar in <xref target="sane-set-cookie"/>. In addition, the algorithm below also strips
leading and trailing whitespace from the cookie name and value (but maintains
internal whitespace), whereas the grammar in <xref target="sane-set-cookie"/> forbids
whitespace in these positions. User agents use this algorithm so as to
interoperate with servers that do not follow the recommendations in <xref target="sane-profile"/>.</t>
        <t>Note: As set-cookie-string may originate from a non-HTTP API, it is not
guaranteed to be free of CTL characters, so this algorithm handles them
explicitly. Horizontal tab (%x09) is excluded from the CTL characters that
lead to set-cookie-string rejection, as it is considered whitespace, which is
handled separately.</t>
        <t>Note: The set-cookie-string may contain octet sequences that appear
percent-encoded as per <xref section="2.1" sectionFormat="of" target="RFC3986"/>. However, a user agent
MUST NOT decode these sequences and instead parse the individual octets
as specified in this algorithm.</t>
        <t>A user agent MUST use an algorithm equivalent to the following algorithm to
parse a set-cookie-string:</t>
        <ol spacing="normal" type="1"><li>
            <t>If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F character
(CTL characters excluding HTAB):
Abort this algorithm and ignore the set-cookie-string entirely.</t>
          </li>
          <li>
            <t>If the set-cookie-string contains a %x3B (";") character:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The name-value-pair string consists of the characters up to, but not
including, the first %x3B (";"), and the unparsed-attributes consist of
the remainder of the set-cookie-string (including the %x3B (";") in
question).</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The name-value-pair string consists of all the characters contained in
the set-cookie-string, and the unparsed-attributes is the empty
string.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the name-value-pair string lacks a %x3D ("=") character, then the name
string is empty, and the value string is the value of name-value-pair.  </t>
            <t>
Otherwise, the (possibly empty) name string consists of the characters up
to, but not including, the first %x3D ("=") character, and the (possibly
empty) value string consists of the characters after the first %x3D ("=")
character.</t>
          </li>
          <li>
            <t>Remove any leading or trailing WSP characters from the name string and the
value string.</t>
          </li>
          <li>
            <t>If the sum of the lengths of the name string and the value string is more
than 4096 octets, abort this algorithm 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;
unparsed-attributes now contains any remaining characters.</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>Developers can more completely mitigate CSRF through a session management
mechanism such as that described in <xref target="top-level-navigations"/>.</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 this algorithm 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 this algorithm 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 this algorithm 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 CHAR, abort
this algorithm 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>Let request-host-canonical be the canonicalized request-host.</t>
              </li>
              <li>
                <t>If request-host fails to be canonicalized then abort this algorithm and
ignore the cookie entirely.</t>
              </li>
              <li>
                <t>If the domain-attribute is identical to the request-host-canonical:      </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 this algorithm 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 request-host-canonical does not domain-match
(see <xref target="domain-matching"/>) the domain-attribute:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Abort this algorithm 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 request-host-canonical.</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 this algorithm 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 this algorithm 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 (see <xref target="domain-matching"/>) 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 this algorithm 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 this algorithm and ignore the newly created cookie entirely.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie's "same-site-flag" is "None", abort this algorithm 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 this algorithm 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 this algorithm 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 this algorithm 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 this algorithm 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 (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 retrieval-host-canonical be the canonicalized host of the retrieval's URI.</t>
            </li>
            <li>
              <t>If the host of the retrieval's URI fails to be canonicalized then abort this
algorithm.</t>
            </li>
            <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 retrieval-host-canonical 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 retrieval-host-canonical
domain-matches (see <xref target="domain-matching"/>) the cookie's domain.</t>
                    </li>
                    <li>
                      <t>The cookie's domain is not a public suffix, for user agents configured
to reject "public suffixes".</t>
                    </li>
                  </ul>
                  <t>
Note: It's possible that the public suffix list was changed since the
cookie was created. If this change resulted in the cookie's domain
becoming a public suffix then that cookie would have been rejected during
creation if it had been created now. (See <xref target="storage-model"/> step 9).</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 <xref target="RFC8446"/>, 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 the cookie was not the last 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 handling
is that many platforms (both in servers and user agents) provide a string-based
application programming interface (API) to cookies, requiring
application-layer programmers to generate and parse the syntax used by the
Cookie and Set-Cookie header fields, which many programmers have done incorrectly,
resulting in interoperability problems.</t>
        <t>Instead of providing string-based APIs to cookies, platforms would be
well-served by providing more semantic APIs. It is beyond the scope of this
document to recommend specific API designs, but there are clear benefits to
accepting an abstract "Date" object instead of a serialized date string.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Cookies' primary privacy risk is their ability to correlate user activity. This
can happen on a single site, but is most problematic when activity is tracked across different,
seemingly unconnected Web sites to build a user profile.</t>
      <t>Over time, this capability (warned against explicitly in <xref target="RFC2109"/> and all of its successors)
has become widely used for varied reasons including:</t>
      <ul spacing="normal">
        <li>
          <t>authenticating users across sites,</t>
        </li>
        <li>
          <t>assembling information on users,</t>
        </li>
        <li>
          <t>protecting against fraud and other forms of undesirable traffic,</t>
        </li>
        <li>
          <t>targeting advertisements at specific users or at users with specified attributes,</t>
        </li>
        <li>
          <t>measuring how often ads are shown to users, and</t>
        </li>
        <li>
          <t>recognizing when an ad resulted in a change in user behavior.</t>
        </li>
      </ul>
      <t>While not every use of cookies is necessarily problematic for privacy, their potential for abuse
has become a widespread concern in the Internet community and broader society. In response to these concerns, user agents
have actively constrained cookie functionality in various ways (as allowed and encouraged by
previous specifications), while avoiding disruption to features they judge desirable for the health
of the Web.</t>
      <t>It is too early to declare consensus on which specific mechanism(s) should be used to mitigate cookies' privacy impact; user agents' ongoing changes to how they are handled are best characterised as experiments that
can provide input into that eventual consensus.</t>
      <t>Instead, this document describes limited, general mitigations against the privacy risks associated
with cookies that enjoy wide deployment at the time of writing. It is expected that implementations
will continue to experiment and impose stricter, more well-defined limitations on cookies over
time. Future versions of this document might codify those mechanisms based upon deployment
experience. If functions that currently rely on cookies can be supported by separate, targeted
mechanisms, they might be documented in separate specifications and stricter limitations on cookies
might become feasible.</t>
      <t>Note that cookies are not the only mechanism that can be used to track users across sites, so while
these mitigations are necessary to improve Web privacy, they are not sufficient on their own.</t>
      <section anchor="third-party-cookies">
        <name>Third-Party Cookies</name>
        <t>A "third-party" or cross-site cookie is one that is associated with embedded content (such as
scripts, images, stylesheets, frames) that is obtained from a different server than the one that
hosts the primary resource (usually, the Web page that the user is viewing). Third-party cookies
are often used to correlate users' activity on different sites.</t>
        <t>Because of their inherent privacy issues, most user agents now limit third-party cookies in a
variety of ways. Some completely block third-party cookies by refusing to process third-party
Set-Cookie header fields and refusing to send third-party Cookie header fields. Some partition
cookies based upon the first-party context, so that different cookies are sent depending on the
site being browsed. Some block cookies based upon user agent cookie policy and/or user controls.</t>
        <t>While this document does not endorse or require a specific approach, it is RECOMMENDED that user
agents adopt a policy for third-party cookies that is as restrictive as compatibility constraints
permit. Consequently, resources cannot rely upon third-party cookies being treated consistently by
user agents for the foreseeable future.</t>
      </section>
      <section anchor="cookie-policy">
        <name>Cookie Policy</name>
        <t>User agents MAY enforce a cookie policy consisting of restrictions on how
cookies may be used or ignored (see <xref target="ignoring-cookies"/>).</t>
        <t>A cookie policy may govern which domains or parties, as in first and third parties
(see <xref target="third-party-cookies"/>), for which the user agent will allow cookie access.
The policy can also define limits on cookie size, cookie expiry (see
<xref target="cookie-lifetime-limits"/>), and the number of cookies per
domain or in total.</t>
        <t>The recommended cookie expiry upper limit is 400 days. User agents may set
a lower limit to enforce shorter data retention timelines, or set the limit higher
to support longer retention when appropriate (e.g., server-to-server
communication over HTTPS).</t>
        <t>The goal of a restrictive cookie policy is often to improve security or privacy.
User agents often allow users to change the cookie policy (see <xref target="user-controls"/>).</t>
      </section>
      <section anchor="user-controls">
        <name>User Controls</name>
        <t>User agents SHOULD provide users with a mechanism for managing the cookies
stored in the cookie store. For example, a user agent might let users delete
all cookies received during a specified time period or all the cookies related
to a particular domain. In addition, many user agents include a user interface
element that lets users examine the cookies stored in their cookie store.</t>
        <t>User agents SHOULD provide users with a mechanism for disabling cookies. When
cookies are disabled, the user agent MUST NOT include a Cookie header field in
outbound HTTP requests and the user agent MUST NOT process Set-Cookie header fields
in inbound HTTP responses.</t>
        <t>User agents MAY offer a way to change the cookie policy (see
<xref target="cookie-policy"/>).</t>
        <t>User agents MAY provide users the option of preventing persistent storage of
cookies across sessions. When configured thusly, user agents MUST treat all
received cookies as if the persistent-flag were set to false. Some popular
user agents expose this functionality via "private browsing" mode
<xref target="Aggarwal2010"/>.</t>
      </section>
      <section anchor="expiration-dates">
        <name>Expiration Dates</name>
        <t>Although servers can set the expiration date for cookies to the distant future,
most user agents do not actually retain cookies for multiple decades. Rather
than choosing gratuitously long expiration periods, servers SHOULD promote user
privacy by selecting reasonable cookie expiration periods based on the purpose
of the cookie. For example, a typical session identifier might reasonably be
set to expire in two weeks.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="overview-1">
        <name>Overview</name>
        <t>Cookies have a number of security pitfalls. This section overviews a few of the
more salient issues.</t>
        <t>In particular, cookies encourage developers to rely on ambient authority for
authentication, often becoming vulnerable to attacks such as cross-site request
forgery <xref target="CSRF"/>. Also, when storing session identifiers in cookies, developers
often create session fixation vulnerabilities.</t>
        <t>Transport-layer encryption, such as that employed in HTTPS, offers a
significant layer of defense against network attacks on cookies. However, it
is insufficient in fully preventing a networking attacker from obtaining or
altering a victim's cookies because of inherent vulnerabilities in the cookie
protocol itself (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. This means that
a cookie needs to explicitly specify any protective attributes. For example,
the cookie:</t>
        <t><tt>
Set-Cookie: a=b
</tt></t>
        <t>doesn't specify the Secure attribute and will therefore be accessible on both
secure and insecure connections, regardless of the original connection type it
was created on. This behavior could allow an attacker to read or modify the
cookie.</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 <xref target="RFC8446"/>), 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>
        </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 anchor="public-suffix-list-security">
        <name>Public Suffix List</name>
        <t>The boundaries of cookies depend on a site's "registrable domain" which in turn
depends on the public suffix of the domain.</t>
        <t>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>Failure to do so could allow malicious or sensitive cookies to leak between
registrable domains.</t>
      </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 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>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-attributes-registry">
        <name>"Cookie Attributes" Registry</name>
        <t>IANA is requested to create the "Cookie Attributes" registry, defining the name space of
attributes used to control cookies' behavior. The registry should be maintained in a new
registry group called "Hypertext Transfer Protocol (HTTP) Cookie Attributes" 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 MUST be recognized case-insensitively.  Two attribute
names that case-insensitively match MUST NOT be registered.</t>
        </section>
        <section anchor="registration">
          <name>Registration</name>
          <t>The "Cookie Attributes" 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"/>
    <displayreference target="RFC8446" to="TLS13"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1123">
          <front>
            <title>Requirements for Internet Hosts - Application and Support</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1123"/>
          <seriesInfo name="DOI" value="10.17487/RFC1123"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4790">
          <front>
            <title>Internet Application Protocol Collation Registry</title>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>Many Internet application protocols include string-based lookup, searching, or sorting operations. However, the problem space for searching and sorting international strings is large, not fully explored, and is outside the area of expertise for the Internet Engineering Task Force (IETF). Rather than attempt to solve such a large problem, this specification creates an abstraction framework so that application protocols can precisely identify a comparison function, and the repertoire of comparison functions can be extended in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4790"/>
          <seriesInfo name="DOI" value="10.17487/RFC4790"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </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="DOM-DOCUMENT-COOKIE" target="https://html.spec.whatwg.org/#dom-document-cookie">
          <front>
            <title>HTML - Living Standard</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization/>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization/>
            </author>
            <author initials="D." surname="Farolino" fullname="Dominic Farolino">
              <organization/>
            </author>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization/>
            </author>
            <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
              <organization/>
            </author>
            <author initials="S." surname="Pieters" fullname="Simon Pieters">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <annotation>WHATWG</annotation>
        </reference>
        <reference anchor="SAMESITE" target="https://html.spec.whatwg.org/#same-site">
          <front>
            <title>HTML Living Standard</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization/>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization/>
            </author>
            <author initials="D." surname="Farolino" fullname="Dominic Farolino">
              <organization/>
            </author>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization/>
            </author>
            <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
              <organization/>
            </author>
            <author initials="S." surname="Pieters" fullname="Simon Pieters">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <annotation>WHATWG</annotation>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="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="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="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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="CSRF" target="http://portal.acm.org/citation.cfm?id=1455770.1455782">
          <front>
            <title>Robust Defenses for Cross-Site Request Forgery</title>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="J." surname="Mitchell">
              <organization/>
            </author>
            <date year="2008" month="October"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/1455770.1455782"/>
          <seriesInfo name="ISBN" value="978-1-59593-810-7"/>
          <seriesInfo name="ACM" value="CCS '08: Proceedings of the 15th ACM conference on Computer and communications security (pages 75-88)"/>
        </reference>
        <reference anchor="Aggarwal2010" target="http://www.usenix.org/events/sec10/tech/full_papers/Aggarwal.pdf">
          <front>
            <title>An Analysis of Private Browsing Modes in Modern Browsers</title>
            <author initials="G." surname="Aggarwal">
              <organization/>
            </author>
            <author initials="E." surname="Burzstein">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="D." surname="Boneh">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="app-isolation" target="http://www.collinjackson.com/research/papers/appisolation.pdf">
          <front>
            <title>App Isolation - Get the Security of Multiple Browsers with Just One</title>
            <author initials="E." surname="Chen" fullname="Eric Y. Chen">
              <organization/>
            </author>
            <author initials="J." surname="Bau" fullname="Jason Bau">
              <organization/>
            </author>
            <author initials="C." surname="Reis" fullname="Charles Reis">
              <organization/>
            </author>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson" fullname="Collin Jackson">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
        </reference>
        <reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
          <front>
            <title>Fetch Living Standard</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <annotation>WHATWG</annotation>
        </reference>
        <reference anchor="HTML" target="https://html.spec.whatwg.org/">
          <front>
            <title>HTML Living Standard</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization/>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization/>
            </author>
            <author initials="D." surname="Farolino" fullname="Dominic Farolino">
              <organization/>
            </author>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization/>
            </author>
            <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
              <organization/>
            </author>
            <author initials="S." surname="Pieters" fullname="Simon Pieters">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <annotation>WHATWG</annotation>
        </reference>
        <reference anchor="prerendering" target="https://www.chromium.org/developers/design-documents/prerender">
          <front>
            <title>Chrome Prerendering</title>
            <author initials="C." surname="Bentzel" fullname="Chris Bentzel">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PSL" target="https://publicsuffix.org/list/">
          <front>
            <title>Public Suffix List</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HttpFieldNameRegistry" target="https://www.iana.org/assignments/http-fields/">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SERVICE-WORKERS" target="https://www.w3.org/TR/service-workers/">
          <front>
            <title>Service Workers</title>
            <author initials="J." surname="Archibald" fullname="Jake Archibald">
              <organization/>
            </author>
            <author initials="M." surname="Kruisselbrink" fullname="Marijn Kruisselbrink">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2109">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="D. Kristol" initials="D." surname="Kristol"/>
            <author fullname="L. Montulli" initials="L." surname="Montulli"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document specifies a way to create a stateful session with HTTP requests and responses. It describes two new headers, Cookie and Set- Cookie, which carry state information between participating origin servers and user agents. The method described here differs from Netscape's Cookie proposal, but it can interoperate with HTTP/1.0 user agents that use Netscape's method. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2109"/>
          <seriesInfo name="DOI" value="10.17487/RFC2109"/>
        </reference>
      </references>
    </references>
    <?line 2585?>

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

-->

</rfc>
