<?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.8 (Ruby 3.2.2) -->
<?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-14" category="std" consensus="true" obsoletes="6265" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title>Cookies: HTTP State Management Mechanism</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-14"/>
    <author initials="S." surname="Bingler" fullname="Steven Bingler" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>bingler@google.com</email>
      </address>
    </author>
    <author initials="M." surname="West" fullname="Mike West" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>mkwst@google.com</email>
        <uri>https://mikewest.org/</uri>
      </address>
    </author>
    <author initials="J." surname="Wilander" fullname="John Wilander" role="editor">
      <organization>Apple, Inc</organization>
      <address>
        <email>wilander@apple.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    <abstract>
      <?line 220?>

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

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

Set-Cookie: SID=31d4d96e407aad42

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

== User Agent -> Server ==

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

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

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

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

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

   2.  The cookie's same-site-flag is "Default" and the amount of
       time elapsed since the cookie's creation-time is at most a
       duration of the user agent's choosing.
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="storage-model">
        <name>Storage Model</name>
        <t>The user agent stores the following fields about each cookie: name, value,
expiry-time, domain, path, creation-time, last-access-time,
persistent-flag, host-only-flag, secure-only-flag, http-only-flag,
and same-site-flag.</t>
        <t>When the user agent "receives a cookie" from a request-uri with name
cookie-name, value cookie-value, and attributes cookie-attribute-list, the
user agent MUST process the cookie as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>A user agent MAY ignore a received cookie in its entirety. See
<xref target="ignoring-cookies"/>.</t>
          </li>
          <li>
            <t>If cookie-name is empty and cookie-value is empty, abort these steps and
ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie-name or the cookie-value contains a
%x00-08 / %x0A-1F / %x7F character (CTL characters excluding HTAB),
abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the sum of the lengths of cookie-name and cookie-value is more than
4096 octets, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>Create a new cookie with name cookie-name, value cookie-value. Set the
creation-time and the last-access-time to the current date and time.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an attribute-name
of "Max-Age":  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
"Max-Age".</t>
              </li>
            </ol>
            <t>
Otherwise, if the cookie-attribute-list contains an attribute with an
attribute-name of "Expires" (and does not contain an attribute with an
attribute-name of "Max-Age"):  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
"Expires".</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's persistent-flag to false.</t>
              </li>
              <li>
                <t>Set the cookie's expiry-time to the latest representable date.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Domain":  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let the domain-attribute be the attribute-value of the last
attribute in the cookie-attribute-list with both an
attribute-name of "Domain" and an attribute-value whose
length is no more than 1024 octets. (Note that a leading %x2E
("."), if present, is ignored even though that character is not
permitted.)</t>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let the domain-attribute be the empty string.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the domain-attribute contains a character that is not in the range of <xref target="USASCII"/>
characters, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the user agent is configured to reject "public suffixes" and the
domain-attribute is a public suffix:  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the domain-attribute is identical to the canonicalized
request-host:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Let the domain-attribute be the empty string.</t>
                  </li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Abort these steps and ignore the cookie entirely.</t>
                  </li>
                </ol>
              </li>
            </ol>
            <t>
NOTE: This step prevents <tt>attacker.example</tt> from disrupting the integrity of
<tt>site.example</tt> by setting a cookie with a Domain attribute of "example".</t>
          </li>
          <li>
            <t>If the domain-attribute is non-empty:  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the canonicalized request-host does not domain-match the
domain-attribute:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Abort these steps and ignore the cookie entirely.</t>
                  </li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>Set the cookie's host-only-flag to false.</t>
                  </li>
                  <li>
                    <t>Set the cookie's domain to the domain-attribute.</t>
                  </li>
                </ol>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the cookie's host-only-flag to true.</t>
              </li>
              <li>
                <t>Set the cookie's domain to the canonicalized request-host.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Path", set the cookie's path to attribute-value of
the last attribute in the cookie-attribute-list with both an
attribute-name of "Path" and an attribute-value whose length is no
more than 1024 octets. Otherwise, set the cookie's path to the
default-path of the request-uri.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "Secure", set the cookie's secure-only-flag to true.
Otherwise, set the cookie's secure-only-flag to false.</t>
          </li>
          <li>
            <t>If the request-uri does not denote a "secure" connection (as defined by the
user agent), and the cookie's secure-only-flag is true, then abort these
steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "HttpOnly", set the cookie's http-only-flag to true.
Otherwise, set the cookie's http-only-flag to false.</t>
          </li>
          <li>
            <t>If the cookie was received from a "non-HTTP" API and the cookie's
http-only-flag is true, abort these steps and ignore the cookie entirely.</t>
          </li>
          <li>
            <t>If the cookie's secure-only-flag is false, and the request-uri does not
denote a "secure" connection, then abort these steps and ignore the cookie
entirely if the cookie store contains one or more cookies that meet all of
the following criteria:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Their name matches the name of the newly-created cookie.</t>
              </li>
              <li>
                <t>Their secure-only-flag is true.</t>
              </li>
              <li>
                <t>Their domain domain-matches the domain of the newly-created cookie, or
vice-versa.</t>
              </li>
              <li>
                <t>The path of the newly-created cookie path-matches the path of the
existing cookie.</t>
              </li>
            </ol>
            <t>
Note: The path comparison is not symmetric, ensuring only that a
newly-created, non-secure cookie does not overlay an existing secure
cookie, providing some mitigation against cookie-fixing attacks. That is,
given an existing secure cookie named 'a' with a path of '/login', a
non-secure cookie named 'a' could be set for a path of '/' or '/foo', but
not for a path of '/login' or '/login/en'.</t>
          </li>
          <li>
            <t>If the cookie-attribute-list contains an attribute with an
attribute-name of "SameSite", and an attribute-value of "Strict", "Lax", or
"None", set the cookie's same-site-flag to the attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of "SameSite".
Otherwise, set the cookie's same-site-flag to "Default".</t>
          </li>
          <li>
            <t>If the cookie's <tt>same-site-flag</tt> is not "None":  </t>
            <ol spacing="normal" type="1"><li>
                <t>If the cookie was received from a "non-HTTP" API, and the API was called
from a navigable's active document whose "site for cookies" is
not same-site with the top-level origin, then abort these steps and
ignore the newly created cookie entirely.</t>
              </li>
              <li>
                <t>If the cookie was received from a "same-site" request (as defined in
<xref target="same-site-requests"/>), skip the remaining substeps and continue
processing the cookie.</t>
              </li>
              <li>
                <t>If the cookie was received from a request which is navigating a
top-level traversable <xref target="HTML"/> (e.g. if the request's "reserved
client" is either <tt>null</tt> or an environment whose "target browsing
context"'s navigable is a top-level traversable), skip the remaining
substeps and continue processing the cookie.      </t>
                <t>
Note: Top-level navigations can create a cookie with any <tt>SameSite</tt>
value, even if the new cookie wouldn't have been sent along with
the request had it already existed prior to the navigation.</t>
              </li>
              <li>
                <t>Abort these steps and ignore the newly created cookie entirely.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie's "same-site-flag" is "None", abort these steps and ignore the
cookie entirely unless the cookie's secure-only-flag is true.</t>
          </li>
          <li>
            <t>If the cookie-name begins with a case-insensitive match for the string
"__Secure-", abort these steps and ignore the cookie entirely unless the
cookie's secure-only-flag is true.</t>
          </li>
          <li>
            <t>If the cookie-name begins with a case-insensitive match for the string
"__Host-", abort these steps and ignore the cookie entirely unless the
cookie meets all the following criteria:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The cookie's secure-only-flag is true.</t>
              </li>
              <li>
                <t>The cookie's host-only-flag is true.</t>
              </li>
              <li>
                <t>The cookie-attribute-list contains an attribute with an attribute-name
of "Path", and the cookie's path is <tt>/</tt>.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>If the cookie-name is empty and either of the following conditions are
true, abort these steps and ignore the cookie:  </t>
            <ul spacing="normal">
              <li>
                <t>the cookie-value begins with a case-insensitive match for the string
"__Secure-"</t>
              </li>
              <li>
                <t>the cookie-value begins with a case-insensitive match for the string
"__Host-"</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the cookie store contains a cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let old-cookie be the existing cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie. (Notice that this
algorithm maintains the invariant that there is at most one such
cookie.)</t>
              </li>
              <li>
                <t>If the newly-created cookie was received from a "non-HTTP" API and the
old-cookie's http-only-flag is true, abort these steps and ignore the
newly created cookie entirely.</t>
              </li>
              <li>
                <t>Update the creation-time of the newly-created cookie to match the
creation-time of the old-cookie.</t>
              </li>
              <li>
                <t>Remove the old-cookie from the cookie store.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Insert the newly-created cookie into the cookie store.</t>
          </li>
        </ol>
        <t>A cookie is "expired" if the cookie has an expiry date in the past.</t>
        <t>The user agent MUST evict all expired cookies from the cookie store if, at any
time, an expired cookie exists in the cookie store.</t>
        <t>At any time, the user agent MAY "remove excess cookies" from the cookie store
if the number of cookies sharing a domain field exceeds some
implementation-defined upper bound (such as 50 cookies).</t>
        <t>At any time, the user agent MAY "remove excess cookies" from the cookie store
if the cookie store exceeds some predetermined upper bound (such as 3000
cookies).</t>
        <t>When the user agent removes excess cookies from the cookie store, the user
agent MUST evict cookies in the following priority order:</t>
        <ol spacing="normal" type="1"><li>
            <t>Expired cookies.</t>
          </li>
          <li>
            <t>Cookies whose secure-only-flag is false, and which share a domain field
with more than a predetermined number of other cookies.</t>
          </li>
          <li>
            <t>Cookies that share a domain field with more than a predetermined number of
other cookies.</t>
          </li>
          <li>
            <t>All cookies.</t>
          </li>
        </ol>
        <t>If two cookies have the same removal priority, the user agent MUST evict the
cookie with the earliest last-access-time first.</t>
        <t>When "the current session is over" (as defined by the user agent), the user
agent MUST remove from the cookie store all cookies with the persistent-flag
set to false.</t>
      </section>
      <section anchor="retrieval-model">
        <name>Retrieval Model</name>
        <t>This section defines how cookies are retrieved from a cookie store in the form
of a cookie-string. A "retrieval" is any event which requires generating a
cookie-string. For example, a retrieval may occur in order to build a Cookie
header field for an HTTP request, or may be required in order to return a
cookie-string from a call to a "non-HTTP" API that provides access to cookies. A
retrieval has an associated URI, same-site status, and type, which
are defined below depending on the type of retrieval.</t>
        <section anchor="cookie">
          <name>The Cookie Header Field</name>
          <t>The user agent includes stored cookies in the Cookie HTTP request header field.</t>
          <t>A user agent MAY omit the Cookie header field in its entirety.  For example, the
user agent might wish to block sending cookies during "third-party" requests
from setting cookies (see <xref target="third-party-cookies"/>).</t>
          <t>If the user agent does attach a Cookie header field to an HTTP request, the
user agent MUST generate a single cookie-string and the user agent MUST compute
the cookie-string following the algorithm defined in <xref target="retrieval-algorithm"/>,
where the retrieval's URI is the request-uri, the retrieval's same-site status
is computed for the HTTP request as defined in <xref target="same-site-requests"/>, and the
retrieval's type is "HTTP".</t>
        </section>
        <section anchor="non-http">
          <name>Non-HTTP APIs</name>
          <t>The user agent MAY implement "non-HTTP" APIs that can be used to access
stored cookies.</t>
          <t>A user agent MAY return an empty cookie-string in certain contexts, such as
when a retrieval occurs within a third-party context (see
<xref target="third-party-cookies"/>).</t>
          <t>If a user agent does return cookies for a given call to a "non-HTTP" API with
an associated Document, then the user agent MUST compute the cookie-string
following the algorithm defined in <xref target="retrieval-algorithm"/>, where the
retrieval's URI is defined by the caller (see <xref target="DOM-DOCUMENT-COOKIE"/>), the
retrieval's same-site status is "same-site" if the Document's "site for
cookies" is same-site with the top-level origin as defined in
<xref target="document-requests"/> (otherwise it is "cross-site"), and the retrieval's type
is "non-HTTP".</t>
        </section>
        <section anchor="retrieval-algorithm">
          <name>Retrieval Algorithm</name>
          <t>Given a cookie store and a retrieval, the following algorithm returns a
cookie-string from a given cookie store.</t>
          <ol spacing="normal" type="1"><li>
              <t>Let cookie-list be the set of cookies from the cookie store that meets all
of the following requirements:  </t>
              <ul spacing="normal">
                <li>
                  <t>Either:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The cookie's host-only-flag is true and the canonicalized
host of the retrieval's URI is identical to the cookie's domain.</t>
                    </li>
                  </ul>
                  <t>
Or:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The cookie's host-only-flag is false and the canonicalized
host of the retrieval's URI domain-matches the cookie's domain.</t>
                    </li>
                  </ul>
                  <t>
NOTE: (For user agents configured to reject "public suffixes") It's
possible that the public suffix list was changed since a cookie was
created. If this change results in a cookie's domain becoming a public
suffix then that cookie is considered invalid as it would have been
rejected during creation (See <xref target="storage-model"/> step 9). User agents
should be careful to avoid retrieving these invalid cookies even if they
domain-match the host of the retrieval's URI.</t>
                </li>
                <li>
                  <t>The retrieval's URI's path path-matches the cookie's path.</t>
                </li>
                <li>
                  <t>If the cookie's secure-only-flag is true, then the retrieval's URI must
denote a "secure" connection (as defined by the user agent).      </t>
                  <t>
NOTE: The notion of a "secure" connection is not defined by this document.
Typically, user agents consider a connection secure if the connection makes
use of transport-layer security, such as SSL or TLS, or if host is trusted.
For example, most user agents consider "https" to be a scheme that denotes
a secure protocol and "localhost" to be trusted host.</t>
                </li>
                <li>
                  <t>If the cookie's http-only-flag is true, then exclude the cookie if the
retrieval's type is "non-HTTP".</t>
                </li>
                <li>
                  <t>If the cookie's same-site-flag is not "None" and the retrieval's same-site
status is "cross-site", then exclude the cookie unless all of the
following conditions are met:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The retrieval's type is "HTTP".</t>
                    </li>
                    <li>
                      <t>The same-site-flag is "Lax" or "Default".</t>
                    </li>
                    <li>
                      <t>The HTTP request associated with the retrieval uses a "safe" method.</t>
                    </li>
                    <li>
                      <t>The target browsing context of the HTTP request associated with the
retrieval is the active browsing context or a top-level traversable.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>The user agent SHOULD sort the cookie-list in the following order:  </t>
              <ul spacing="normal">
                <li>
                  <t>Cookies with longer paths are listed before cookies with shorter
paths.</t>
                </li>
                <li>
                  <t>Among cookies that have equal-length path fields, cookies with earlier
creation-times are listed before cookies with later creation-times.</t>
                </li>
              </ul>
              <t>
NOTE: Not all user agents sort the cookie-list in this order, but this order
reflects common practice when this document was written, and, historically,
there have been servers that (erroneously) depended on this order.</t>
            </li>
            <li>
              <t>Update the last-access-time of each cookie in the cookie-list to the
current date and time.</t>
            </li>
            <li>
              <t>Serialize the cookie-list into a cookie-string by processing each cookie
in the cookie-list in order:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>If the cookies' name is not empty, output the cookie's name followed by
the %x3D ("=") character.</t>
                </li>
                <li>
                  <t>If the cookies' value is not empty, output the cookie's value.</t>
                </li>
                <li>
                  <t>If there is an unprocessed cookie in the cookie-list, output the
characters %x3B and %x20 ("; ").</t>
                </li>
              </ol>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="limits">
        <name>Limits</name>
        <t>Practical user agent implementations have limits on the number and size of
cookies that they can store. General-use user agents SHOULD provide each of the
following minimum capabilities:</t>
        <ul spacing="normal">
          <li>
            <t>At least 50 cookies per domain.</t>
          </li>
          <li>
            <t>At least 3000 cookies total.</t>
          </li>
        </ul>
        <t>User agents MAY limit the maximum number of cookies they store, and may evict
any cookie at any time (whether at the request of the user or due to
implementation limitations).</t>
        <t>Note that a limit on the maximum number of cookies also limits the total size of
the stored cookies, due to the length limits which MUST be enforced in
<xref target="set-cookie"/>.</t>
        <t>Servers SHOULD use as few and as small cookies as possible to avoid reaching
these implementation limits and to minimize network bandwidth due to the
Cookie header field being included in every request.</t>
        <t>Servers SHOULD gracefully degrade if the user agent fails to return one or more
cookies in the Cookie header field because the user agent might evict any cookie
at any time.</t>
      </section>
      <section anchor="application-programming-interfaces">
        <name>Application Programming Interfaces</name>
        <t>One reason the Cookie and Set-Cookie header fields use such esoteric syntax is
that many platforms (both in servers and user agents) provide a string-based
application programming interface (API) to cookies, requiring
application-layer programmers to generate and parse the syntax used by the
Cookie and Set-Cookie header fields, which many programmers have done incorrectly,
resulting in interoperability problems.</t>
        <t>Instead of providing string-based APIs to cookies, platforms would be
well-served by providing more semantic APIs. It is beyond the scope of this
document to recommend specific API designs, but there are clear benefits to
accepting an abstract "Date" object instead of a serialized date string.</t>
      </section>
      <section anchor="idna-migration">
        <name>IDNA Dependency and Migration</name>
        <t>IDNA2008 <xref target="RFC5890"/> supersedes IDNA2003 <xref target="RFC3490"/>. However, there are
differences between the two specifications, and thus there can be differences
in processing (e.g., converting) domain name labels that have been registered
under one from those registered under the other. There will be a transition
period of some time during which IDNA2003-based domain name labels will exist
in the wild. User agents SHOULD implement IDNA2008 <xref target="RFC5890"/> and MAY
implement <xref target="UTS46"/> or <xref target="RFC5895"/> in order to facilitate their IDNA transition.
If a user agent does not implement IDNA2008, the user agent MUST implement
IDNA2003 <xref target="RFC3490"/>.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Cookies' primary privacy risk is their ability to correlate user activity. This
can happen on a single site, but is most problematic when activity is tracked across different,
seemingly unconnected Web sites to build a user profile.</t>
      <t>Over time, this capability (warned against explicitly in <xref target="RFC2109"/> and all of its successors)
has become widely used for varied reasons including:</t>
      <ul spacing="normal">
        <li>
          <t>authenticating users across sites,</t>
        </li>
        <li>
          <t>assembling information on users,</t>
        </li>
        <li>
          <t>protecting against fraud and other forms of undesirable traffic,</t>
        </li>
        <li>
          <t>targeting advertisements at specific users or at users with specified attributes,</t>
        </li>
        <li>
          <t>measuring how often ads are shown to users, and</t>
        </li>
        <li>
          <t>recognizing when an ad resulted in a change in user behavior.</t>
        </li>
      </ul>
      <t>While not every use of cookies is necessarily problematic for privacy, their potential for abuse
has become a widespread concern in the Internet community and broader society. In response to these concerns, user agents
have actively constrained cookie functionality in various ways (as allowed and encouraged by
previous specifications), while avoiding disruption to features they judge desirable for the health
of the Web.</t>
      <t>It is too early to declare consensus on which specific mechanism(s) should be used to mitigate cookies' privacy impact; user agents' ongoing changes to how they are handled are best characterised as experiments that
can provide input into that eventual consensus.</t>
      <t>Instead, this document describes limited, general mitigations against the privacy risks associated
with cookies that enjoy wide deployment at the time of writing. It is expected that implementations
will continue to experiment and impose stricter, more well-defined limitations on cookies over
time. Future versions of this document might codify those mechanisms based upon deployment
experience. If functions that currently rely on cookies can be supported by separate, targeted
mechanisms, they might be documented in separate specifications and stricter limitations on cookies
might become feasible.</t>
      <t>Note that cookies are not the only mechanism that can be used to track users across sites, so while
these mitigations are necessary to improve Web privacy, they are not sufficient on their own.</t>
      <section anchor="third-party-cookies">
        <name>Third-Party Cookies</name>
        <t>A "third-party" or cross-site cookie is one that is associated with embedded content (such as
scripts, images, stylesheets, frames) that is obtained from a different server than the one that
hosts the primary resource (usually, the Web page that the user is viewing). Third-party cookies
are often used to correlate users' activity on different sites.</t>
        <t>Because of their inherent privacy issues, most user agents now limit third-party cookies in a
variety of ways. Some completely block third-party cookies by refusing to process third-party
Set-Cookie header fields and refusing to send third-party Cookie header fields. Some partition
cookies based upon the first-party context, so that different cookies are sent depending on the
site being browsed. Some block cookies based upon user agent cookie policy and/or user controls.</t>
        <t>While this document does not endorse or require a specific approach, it is RECOMMENDED that user
agents adopt a policy for third-party cookies that is as restrictive as compatibility constraints
permit. Consequently, resources cannot rely upon third-party cookies being treated consistently by
user agents for the foreseeable future.</t>
      </section>
      <section anchor="cookie-policy">
        <name>Cookie Policy</name>
        <t>User agents MAY enforce a cookie policy consisting of restrictions on how
cookies may be used or ignored (see <xref target="ignoring-cookies"/>).</t>
        <t>A cookie policy may govern which domains or parties, as in first and third parties
(see <xref target="third-party-cookies"/>), for which the user agent will allow cookie access.
The policy can also define limits on cookie size, cookie expiry (see
<xref target="attribute-expires"/> and <xref target="attribute-max-age"/>), and the number of cookies per
domain or in total.</t>
        <t>The recommended cookie expiry upper limit is 400 days. User agents may set
a lower limit to enforce shorter data retention timelines, or set the limit higher
to support longer retention when appropriate (e.g., server-to-server
communication over HTTPS).</t>
        <t>The goal of a restrictive cookie policy is often to improve security or privacy.
User agents often allow users to change the cookie policy (see <xref target="user-controls"/>).</t>
      </section>
      <section anchor="user-controls">
        <name>User Controls</name>
        <t>User agents SHOULD provide users with a mechanism for managing the cookies
stored in the cookie store. For example, a user agent might let users delete
all cookies received during a specified time period or all the cookies related
to a particular domain. In addition, many user agents include a user interface
element that lets users examine the cookies stored in their cookie store.</t>
        <t>User agents SHOULD provide users with a mechanism for disabling cookies. When
cookies are disabled, the user agent MUST NOT include a Cookie header field in
outbound HTTP requests and the user agent MUST NOT process Set-Cookie header fields
in inbound HTTP responses.</t>
        <t>User agents MAY offer a way to change the cookie policy (see
<xref target="cookie-policy"/>).</t>
        <t>User agents MAY provide users the option of preventing persistent storage of
cookies across sessions. When configured thusly, user agents MUST treat all
received cookies as if the persistent-flag were set to false. Some popular
user agents expose this functionality via "private browsing" mode
<xref target="Aggarwal2010"/>.</t>
      </section>
      <section anchor="expiration-dates">
        <name>Expiration Dates</name>
        <t>Although servers can set the expiration date for cookies to the distant future,
most user agents do not actually retain cookies for multiple decades. Rather
than choosing gratuitously long expiration periods, servers SHOULD promote user
privacy by selecting reasonable cookie expiration periods based on the purpose
of the cookie. For example, a typical session identifier might reasonably be
set to expire in two weeks.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="overview-1">
        <name>Overview</name>
        <t>Cookies have a number of security pitfalls. This section overviews a few of the
more salient issues.</t>
        <t>In particular, cookies encourage developers to rely on ambient authority for
authentication, often becoming vulnerable to attacks such as cross-site request
forgery <xref target="CSRF"/>. Also, when storing session identifiers in cookies, developers
often create session fixation vulnerabilities.</t>
        <t>Transport-layer encryption, such as that employed in HTTPS, is insufficient to
prevent a network attacker from obtaining or altering a victim's cookies because
the cookie protocol itself has various vulnerabilities (see "Weak Confidentiality"
and "Weak Integrity", below). In addition, by default, cookies do not provide
confidentiality or integrity from network attackers, even when used in conjunction
with HTTPS.</t>
      </section>
      <section anchor="ambient-authority">
        <name>Ambient Authority</name>
        <t>A server that uses cookies to authenticate users can suffer security
vulnerabilities because some user agents let remote parties issue HTTP requests
from the user agent (e.g., via HTTP redirects or HTML forms). When issuing
those requests, user agents attach cookies even if the remote party does not
know the contents of the cookies, potentially letting the remote party exercise
authority at an unwary server.</t>
        <t>Although this security concern goes by a number of names (e.g., cross-site
request forgery, confused deputy), the issue stems from cookies being a form of
ambient authority. Cookies encourage server operators to separate designation
(in the form of URLs) from authorization (in the form of cookies).
Consequently, the user agent might supply the authorization for a resource
designated by the attacker, possibly causing the server or its clients to
undertake actions designated by the attacker as though they were authorized by
the user.</t>
        <t>Instead of using cookies for authorization, server operators might wish to
consider entangling designation and authorization by treating URLs as
capabilities. Instead of storing secrets in cookies, this approach stores
secrets in URLs, requiring the remote entity to supply the secret itself.
Although this approach is not a panacea, judicious application of these
principles can lead to more robust security.</t>
      </section>
      <section anchor="clear-text">
        <name>Clear Text</name>
        <t>Unless sent over a secure channel (such as TLS), the information in the Cookie
and Set-Cookie header fields is transmitted in the clear.</t>
        <ol spacing="normal" type="1"><li>
            <t>All sensitive information conveyed in these header fields is exposed to an
eavesdropper.</t>
          </li>
          <li>
            <t>A malicious intermediary could alter the header fields as they travel in either
direction, with unpredictable results.</t>
          </li>
          <li>
            <t>A malicious client could alter the Cookie header fields before transmission,
with unpredictable results.</t>
          </li>
        </ol>
        <t>Servers SHOULD encrypt and sign the contents of cookies (using whatever format
the server desires) when transmitting them to the user agent (even when sending
the cookies over a secure channel). However, encrypting and signing cookie
contents does not prevent an attacker from transplanting a cookie from one user
agent to another or from replaying the cookie at a later time.</t>
        <t>In addition to encrypting and signing the contents of every cookie, servers that
require a higher level of security SHOULD use the Cookie and Set-Cookie
header fields only over a secure channel. When using cookies over a secure channel,
servers SHOULD set the Secure attribute (see <xref target="attribute-secure"/>) for every
cookie. If a server does not set the Secure attribute, the protection
provided by the secure channel will be largely moot.</t>
        <t>For example, consider a webmail server that stores a session identifier in a
cookie and is typically accessed over HTTPS. If the server does not set the
Secure attribute on its cookies, an active network attacker can intercept any
outbound HTTP request from the user agent and redirect that request to the
webmail server over HTTP. Even if the webmail server is not listening for HTTP
connections, the user agent will still include cookies in the request. The
active network attacker can intercept these cookies, replay them against the
server, and learn the contents of the user's email. If, instead, the server had
set the Secure attribute on its cookies, the user agent would not have
included the cookies in the clear-text request.</t>
      </section>
      <section anchor="session-identifiers">
        <name>Session Identifiers</name>
        <t>Instead of storing session information directly in a cookie (where it might be
exposed to or replayed by an attacker), servers commonly store a nonce (or
"session identifier") in a cookie. When the server receives an HTTP request
with a nonce, the server can look up state information associated with the
cookie using the nonce as a key.</t>
        <t>Using session identifier cookies limits the damage an attacker can cause if the
attacker learns the contents of a cookie because the nonce is useful only for
interacting with the server (unlike non-nonce cookie content, which might itself
be sensitive). Furthermore, using a single nonce prevents an attacker from
"splicing" together cookie content from two interactions with the server, which
could cause the server to behave unexpectedly.</t>
        <t>Using session identifiers is not without risk. For example, the server SHOULD
take care to avoid "session fixation" vulnerabilities. A session fixation attack
proceeds in three steps. First, the attacker transplants a session identifier
from his or her user agent to the victim's user agent. Second, the victim uses
that session identifier to interact with the server, possibly imbuing the
session identifier with the user's credentials or confidential information.
Third, the attacker uses the session identifier to interact with server
directly, possibly obtaining the user's authority or confidential information.</t>
      </section>
      <section anchor="weak-confidentiality">
        <name>Weak Confidentiality</name>
        <t>Cookies do not provide isolation by port. If a cookie is readable by a service
running on one port, the cookie is also readable by a service running on another
port of the same server. If a cookie is writable by a service on one port, the
cookie is also writable by a service running on another port of the same server.
For this reason, servers SHOULD NOT both run mutually distrusting services on
different ports of the same host and use cookies to store security-sensitive
information.</t>
        <t>Cookies do not provide isolation by scheme. Although most commonly used with
the http and https schemes, the cookies for a given host might also be
available to other schemes, such as ftp and gopher. Although this lack of
isolation by scheme is most apparent in non-HTTP APIs that permit access to
cookies (e.g., HTML's document.cookie API), the lack of isolation by scheme
is actually present in requirements for processing cookies themselves (e.g.,
consider retrieving a URI with the gopher scheme via HTTP).</t>
        <t>Cookies do not always provide isolation by path. Although the network-level
protocol does not send cookies stored for one path to another, some user
agents expose cookies via non-HTTP APIs, such as HTML's document.cookie API.
Because some of these user agents (e.g., web browsers) do not isolate resources
received from different paths, a resource retrieved from one path might be able
to access cookies stored for another path.</t>
      </section>
      <section anchor="weak-integrity">
        <name>Weak Integrity</name>
        <t>Cookies do not provide integrity guarantees for sibling domains (and their
subdomains). For example, consider foo.site.example and bar.site.example. The
foo.site.example server can set a cookie with a Domain attribute of
"site.example" (possibly overwriting an existing "site.example" cookie set by
bar.site.example), and the user agent will include that cookie in HTTP requests
to bar.site.example. In the worst case, bar.site.example will be unable to
distinguish this cookie from a cookie it set itself. The foo.site.example
server might be able to leverage this ability to mount an attack against
bar.site.example.</t>
        <t>Even though the Set-Cookie header field supports the Path attribute, the Path
attribute does not provide any integrity protection because the user agent
will accept an arbitrary Path attribute in a Set-Cookie header field. For
example, an HTTP response to a request for http://site.example/foo/bar can set
a cookie with a Path attribute of "/qux". Consequently, servers SHOULD NOT
both run mutually distrusting services on different paths of the same host and
use cookies to store security-sensitive information.</t>
        <t>An active network attacker can also inject cookies into the Cookie header field
sent to https://site.example/ by impersonating a response from
http://site.example/ and injecting a Set-Cookie header field. The HTTPS server
at site.example will be unable to distinguish these cookies from cookies that
it set itself in an HTTPS response. An active network attacker might be able
to leverage this ability to mount an attack against site.example even if
site.example uses HTTPS exclusively.</t>
        <t>Servers can partially mitigate these attacks by encrypting and signing the
contents of their cookies, or by naming the cookie with the <tt>__Secure-</tt> prefix.
However, using cryptography does not mitigate the issue completely because an
attacker can replay a cookie he or she received from the authentic site.example
server in the user's session, with unpredictable results.</t>
        <t>Finally, an attacker might be able to force the user agent to delete cookies by
storing a large number of cookies. Once the user agent reaches its storage
limit, the user agent will be forced to evict some cookies. Servers SHOULD NOT
rely upon user agents retaining cookies.</t>
      </section>
      <section anchor="reliance-on-dns">
        <name>Reliance on DNS</name>
        <t>Cookies rely upon the Domain Name System (DNS) for security. If the DNS is
partially or fully compromised, the cookie protocol might fail to provide the
security properties required by applications.</t>
      </section>
      <section anchor="samesite-cookies">
        <name>SameSite Cookies</name>
        <section anchor="defense-in-depth">
          <name>Defense in depth</name>
          <t>"SameSite" cookies offer a robust defense against CSRF attack when deployed in
strict mode, and when supported by the client. It is, however, prudent to ensure
that this designation is not the extent of a site's defense against CSRF, as
same-site navigations and submissions can certainly be executed in conjunction
with other attack vectors such as cross-site scripting or abuse of page
redirections.</t>
          <t>Understanding how and when a request is considered same-site is also important
in order to properly design a site for SameSite cookies. For example, if a
top-level request is made to a sensitive page that request will be considered
cross-site and SameSite cookies won’t be sent; that page’s sub-resources
requests, however, are same-site and would receive SameSite 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 Section 7.1 of <xref 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, a login flow may involve a cross-site top-level <tt>POST</tt> request to
an endpoint which expects a cookie with login information. 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. On the other hand, "None"
enforcement would allow the cookie to be sent with all cross-site requests,
which may not be desirable due to the cookie's sensitive contents.</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 cookies to be sent cross-site with unsafe top-level
requests.</t>
          <t>As a more permissive variant of "Lax" mode, "Lax-allowing-unsafe" mode
necessarily provides fewer protections against CSRF. Ultimately, the provision
of such an enforcement mode should be seen as a temporary, transitional measure
to ease adoption of "Lax" enforcement by default.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-cookie">
        <name>Cookie</name>
        <t>The permanent message header field registry (see <xref target="RFC3864"/>) needs to be
updated with the following registration:</t>
        <dl>
          <dt>Header field name:</dt>
          <dd>
            <t>Cookie</t>
          </dd>
          <dt>Applicable protocol:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>standard</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document:</dt>
          <dd>
            <t>this specification (<xref target="cookie"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-set-cookie">
        <name>Set-Cookie</name>
        <t>The permanent message header field registry (see <xref target="RFC3864"/>) needs to be
updated with the following registration:</t>
        <dl>
          <dt>Header field name:</dt>
          <dd>
            <t>Set-Cookie</t>
          </dd>
          <dt>Applicable protocol:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>standard</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document:</dt>
          <dd>
            <t>this specification (<xref target="set-cookie"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="cookie-attribute-registry">
        <name>Cookie Attribute Registry</name>
        <t>IANA is requested to create the "Cookie Attribute Registry", defining the
name space of attribute used to control cookies' behavior.
The registry should be maintained at
<eref target="https://www.iana.org/assignments/cookie-attribute-names">https://www.iana.org/assignments/cookie-attribute-names</eref>.</t>
        <section anchor="procedure">
          <name>Procedure</name>
          <t>Each registered attribute name is associated with a description, and a
reference detailing how the attribute is to be processed and stored.</t>
          <t>New registrations happen on a "RFC Required" basis (see Section 4.7 of
<xref target="RFC8126"/>). The attribute to be registered MUST match the <tt>extension-av</tt>
syntax defined in <xref target="abnf-syntax"/>. Note that attribute names are generally
defined in CamelCase, but technically accepted case-insensitively.</t>
        </section>
        <section anchor="registration">
          <name>Registration</name>
          <t>The "Cookie Attribute Registry" should be created with the registrations below:</t>
          <table>
            <thead>
              <tr>
                <th align="right">Name</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">Domain</td>
                <td align="left">
                  <xref target="attribute-domain"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Expires</td>
                <td align="left">
                  <xref target="attribute-expires"/> of this document</td>
              </tr>
              <tr>
                <td align="right">HttpOnly</td>
                <td align="left">
                  <xref target="attribute-httponly"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Max-Age</td>
                <td align="left">
                  <xref target="attribute-max-age"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Path</td>
                <td align="left">
                  <xref target="attribute-path"/> of this document</td>
              </tr>
              <tr>
                <td align="right">SameSite</td>
                <td align="left">
                  <xref target="attribute-samesite"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Secure</td>
                <td align="left">
                  <xref target="attribute-secure"/> of this document</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1123">
          <front>
            <title>Requirements for Internet Hosts - Application and Support</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1123"/>
          <seriesInfo name="DOI" value="10.17487/RFC1123"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3490">
          <front>
            <title>Internationalizing Domain Names in Applications (IDNA)</title>
            <author initials="A." surname="Costello">
              <organization/>
            </author>
            <date year="2003" month="March"/>
          </front>
          <seriesInfo name="RFC" value="3490"/>
          <annotation>See <xref target="idna-migration"/> for an explanation why the normative reference to an obsoleted specification is needed.</annotation>
        </reference>
        <reference anchor="RFC4790">
          <front>
            <title>Internet Application Protocol Collation Registry</title>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>Many Internet application protocols include string-based lookup, searching, or sorting operations. However, the problem space for searching and sorting international strings is large, not fully explored, and is outside the area of expertise for the Internet Engineering Task Force (IETF). Rather than attempt to solve such a large problem, this specification creates an abstraction framework so that application protocols can precisely identify a comparison function, and the repertoire of comparison functions can be extended in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4790"/>
          <seriesInfo name="DOI" value="10.17487/RFC4790"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="USASCII">
          <front>
            <title>Coded Character Set -- 7-bit American Standard Code for Information Interchange</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="1986"/>
          </front>
          <seriesInfo name="ANSI" value="X3.4"/>
        </reference>
        <reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
          <front>
            <title>Fetch</title>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization>Mozilla</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HTML" target="https://html.spec.whatwg.org/">
          <front>
            <title>HTML</title>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization>Google, Inc.</organization>
            </author>
            <author initials="S." surname="Pieters" fullname="Simon Pieters">
              <organization>Opera</organization>
            </author>
            <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
              <organization>Mozilla</organization>
            </author>
            <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
              <organization>Opera</organization>
            </author>
            <author initials="D." surname="Denicola" fullname="Domenic Denicola">
              <organization>Google, Inc.</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DOM-DOCUMENT-COOKIE" target="https://html.spec.whatwg.org/#dom-document-cookie">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="May" day="18"/>
          </front>
        </reference>
        <reference anchor="SAMESITE" target="https://html.spec.whatwg.org/#same-site">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
        </reference>
        <reference anchor="SERVICE-WORKERS" target="http://www.w3.org/TR/service-workers/">
          <front>
            <title>Service Workers</title>
            <author initials="A." surname="Russell" fullname="Alex Russell">
              <organization/>
            </author>
            <author initials="J." surname="Song" fullname="Jungkee Song">
              <organization/>
            </author>
            <author initials="J." surname="Archibald" fullname="Jake Archibald">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HTTPSEM">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding" initials="R. T." surname="Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke" initials="J." surname="Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <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.

 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="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2818">
          <front>
            <title>HTTP Over TLS</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2818"/>
          <seriesInfo name="DOI" value="10.17487/RFC2818"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC3864">
          <front>
            <title>Registration Procedures for Message Header Fields</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <date month="September" year="2004"/>
            <abstract>
              <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. 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="90"/>
          <seriesInfo name="RFC" value="3864"/>
          <seriesInfo name="DOI" value="10.17487/RFC3864"/>
        </reference>
        <reference anchor="RFC5895">
          <front>
            <title>Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008</title>
            <author fullname="P. Resnick" initials="P." surname="Resnick"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>In the original version of the Internationalized Domain Names in Applications (IDNA) protocol, any Unicode code points taken from user input were mapped into a set of Unicode code points that "made sense", and then encoded and passed to the domain name system (DNS). The IDNA2008 protocol (described in RFCs 5890, 5891, 5892, and 5893) presumes that the input to the protocol comes from a set of "permitted" code points, which it then encodes and passes to the DNS, but does not specify what to do with the result of user input. This document describes the actions that can be taken by an implementation between receiving user input and passing permitted code points to the new IDNA protocol. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5895"/>
          <seriesInfo name="DOI" value="10.17487/RFC5895"/>
        </reference>
        <reference anchor="RFC7034">
          <front>
            <title>HTTP Header Field X-Frame-Options</title>
            <author fullname="D. Ross" initials="D." surname="Ross"/>
            <author fullname="T. Gondrom" initials="T." surname="Gondrom"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>To improve the protection of web applications against clickjacking, this document describes the X-Frame-Options HTTP header field, which declares a policy, communicated from the server to the client browser, regarding whether the browser may display the transmitted content in frames that are part of other web pages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7034"/>
          <seriesInfo name="DOI" value="10.17487/RFC7034"/>
        </reference>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="UTS46" target="http://unicode.org/reports/tr46/">
          <front>
            <title>Unicode IDNA Compatibility Processing</title>
            <author initials="M." surname="Davis" fullname="Mark Davis">
              <organization/>
            </author>
            <author initials="M." surname="Suignard" fullname="Michel Suignard">
              <organization/>
            </author>
            <date year="2016" month="June"/>
          </front>
          <seriesInfo name="UNICODE" value="Unicode Technical Standards # 46"/>
        </reference>
        <reference anchor="CSRF" target="http://portal.acm.org/citation.cfm?id=1455770.1455782">
          <front>
            <title>Robust Defenses for Cross-Site Request Forgery</title>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="J." surname="Mitchell">
              <organization/>
            </author>
            <date year="2008" month="October"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/1455770.1455782"/>
          <seriesInfo name="ISBN" value="978-1-59593-810-7"/>
          <seriesInfo name="ACM" value="CCS '08: Proceedings of the 15th ACM conference on Computer and communications security (pages 75-88)"/>
        </reference>
        <reference anchor="Aggarwal2010" target="http://www.usenix.org/events/sec10/tech/full_papers/Aggarwal.pdf">
          <front>
            <title>An Analysis of Private Browsing Modes in Modern Browsers</title>
            <author initials="G." surname="Aggarwal">
              <organization/>
            </author>
            <author initials="E." surname="Burzstein">
              <organization/>
            </author>
            <author initials="C." surname="Jackson">
              <organization/>
            </author>
            <author initials="D." surname="Boneh">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="app-isolation" target="http://www.collinjackson.com/research/papers/appisolation.pdf">
          <front>
            <title>App Isolation - Get the Security of Multiple Browsers with Just One</title>
            <author initials="E." surname="Chen" fullname="Eric Y. Chen">
              <organization/>
            </author>
            <author initials="J." surname="Bau" fullname="Jason Bau">
              <organization/>
            </author>
            <author initials="C." surname="Reis" fullname="Charles Reis">
              <organization/>
            </author>
            <author initials="A." surname="Barth" fullname="Adam Barth">
              <organization/>
            </author>
            <author initials="C." surname="Jackson" fullname="Collin Jackson">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
        </reference>
        <reference anchor="prerendering" target="https://www.chromium.org/developers/design-documents/prerender">
          <front>
            <title>Chrome Prerendering</title>
            <author initials="C." surname="Bentzel" fullname="Chris Bentzel">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-httpbis-cookie-alone">
          <front>
            <title>Deprecate modification of 'secure' cookies from non-secure origins</title>
            <author fullname="Mike West" initials="M." surname="West">
              <organization>Google, Inc</organization>
            </author>
            <date day="5" month="September" year="2016"/>
            <abstract>
              <t>   This document updates RFC6265 by removing the ability for a non-
   secure origin to set cookies with a 'secure' flag, and to overwrite
   cookies whose 'secure' flag is set.  This deprecation improves the
   isolation between HTTP and HTTPS origins, and reduces the risk of
   malicious interference.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cookie-same-site-00"/>
        </reference>
        <reference anchor="PSL" target="https://publicsuffix.org/list/">
          <front>
            <title>Public Suffix List</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="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 2479?>

<section anchor="changes">
      <name>Changes</name>
      <section anchor="draft-ietf-httpbis-rfc6265bis-00">
        <name>draft-ietf-httpbis-rfc6265bis-00</name>
        <ul spacing="normal">
          <li>
            <t>Port <xref target="RFC6265"/> to Markdown. No (intentional) normative changes.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-01">
        <name>draft-ietf-httpbis-rfc6265bis-01</name>
        <ul spacing="normal">
          <li>
            <t>Fixes to formatting caused by mistakes in the initial port to Markdown:  </t>
            <ul spacing="normal">
              <li>
                <t><eref target="https://github.com/httpwg/http-extensions/issues/243">https://github.com/httpwg/http-extensions/issues/243</eref></t>
              </li>
              <li>
                <t><eref target="https://github.com/httpwg/http-extensions/issues/246">https://github.com/httpwg/http-extensions/issues/246</eref></t>
              </li>
            </ul>
          </li>
          <li>
            <t>Addresses errata 3444 by updating the <tt>path-value</tt> and <tt>extension-av</tt>
grammar, errata 4148 by updating the <tt>day-of-month</tt>, <tt>year</tt>, and <tt>time</tt>
grammar, and errata 3663 by adding the requested note.
<eref target="https://www.rfc-editor.org/errata_search.php?rfc=6265">https://www.rfc-editor.org/errata_search.php?rfc=6265</eref></t>
          </li>
          <li>
            <t>Dropped <tt>Cookie2</tt> and <tt>Set-Cookie2</tt> from the IANA Considerations section:
<eref target="https://github.com/httpwg/http-extensions/issues/247">https://github.com/httpwg/http-extensions/issues/247</eref></t>
          </li>
          <li>
            <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-alone"/>, removing
the ability for a non-secure origin to set cookies with a 'secure' flag, and
to overwrite cookies whose 'secure' flag is true.</t>
          </li>
          <li>
            <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-prefixes"/>, adding
<tt>__Secure-</tt> and <tt>__Host-</tt> cookie name prefix processing instructions.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-02">
        <name>draft-ietf-httpbis-rfc6265bis-02</name>
        <ul spacing="normal">
          <li>
            <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-same-site"/>, adding
support for the <tt>SameSite</tt> attribute.</t>
          </li>
          <li>
            <t>Closed a number of editorial bugs:  </t>
            <ul spacing="normal">
              <li>
                <t>Clarified address bar behavior for SameSite cookies:
<eref target="https://github.com/httpwg/http-extensions/issues/201">https://github.com/httpwg/http-extensions/issues/201</eref></t>
              </li>
              <li>
                <t>Added the word "Cookies" to the document's name:
<eref target="https://github.com/httpwg/http-extensions/issues/204">https://github.com/httpwg/http-extensions/issues/204</eref></t>
              </li>
              <li>
                <t>Clarified that the <tt>__Host-</tt> prefix requires an explicit <tt>Path</tt> attribute:
<eref target="https://github.com/httpwg/http-extensions/issues/222">https://github.com/httpwg/http-extensions/issues/222</eref></t>
              </li>
              <li>
                <t>Expanded the options for dealing with third-party cookies to include a
brief mention of partitioning based on first-party:
<eref target="https://github.com/httpwg/http-extensions/issues/248">https://github.com/httpwg/http-extensions/issues/248</eref></t>
              </li>
              <li>
                <t>Noted that double-quotes in cookie values are part of the value, and are
not stripped: <eref target="https://github.com/httpwg/http-extensions/issues/295">https://github.com/httpwg/http-extensions/issues/295</eref></t>
              </li>
              <li>
                <t>Fixed the "site for cookies" algorithm to return something that makes
sense: <eref target="https://github.com/httpwg/http-extensions/issues/302">https://github.com/httpwg/http-extensions/issues/302</eref></t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-03">
        <name>draft-ietf-httpbis-rfc6265bis-03</name>
        <ul spacing="normal">
          <li>
            <t>Clarified handling of invalid SameSite values:
<eref target="https://github.com/httpwg/http-extensions/issues/389">https://github.com/httpwg/http-extensions/issues/389</eref></t>
          </li>
          <li>
            <t>Reflect widespread implementation practice of including a cookie's
<tt>host-only-flag</tt> when calculating its uniqueness:
<eref target="https://github.com/httpwg/http-extensions/issues/199">https://github.com/httpwg/http-extensions/issues/199</eref></t>
          </li>
          <li>
            <t>Introduced an explicit "None" value for the SameSite attribute:
<eref target="https://github.com/httpwg/http-extensions/issues/788">https://github.com/httpwg/http-extensions/issues/788</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-04">
        <name>draft-ietf-httpbis-rfc6265bis-04</name>
        <ul spacing="normal">
          <li>
            <t>Allow <tt>SameSite</tt> cookies to be set for all top-level navigations.
<eref target="https://github.com/httpwg/http-extensions/issues/594">https://github.com/httpwg/http-extensions/issues/594</eref></t>
          </li>
          <li>
            <t>Treat <tt>Set-Cookie: token</tt> as creating the cookie <tt>("", "token")</tt>:
<eref target="https://github.com/httpwg/http-extensions/issues/159">https://github.com/httpwg/http-extensions/issues/159</eref></t>
          </li>
          <li>
            <t>Reject cookies with neither name nor value (e.g. <tt>Set-Cookie: =</tt> and
<tt>Set-Cookie:</tt>:  <eref target="https://github.com/httpwg/http-extensions/issues/159">https://github.com/httpwg/http-extensions/issues/159</eref></t>
          </li>
          <li>
            <t>Clarified behavior of multiple <tt>SameSite</tt> attributes in a cookie string:
<eref target="https://github.com/httpwg/http-extensions/issues/901">https://github.com/httpwg/http-extensions/issues/901</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-05">
        <name>draft-ietf-httpbis-rfc6265bis-05</name>
        <ul spacing="normal">
          <li>
            <t>Typos and editorial fixes:
<eref target="https://github.com/httpwg/http-extensions/pull/1035">https://github.com/httpwg/http-extensions/pull/1035</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/1038">https://github.com/httpwg/http-extensions/pull/1038</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/1040">https://github.com/httpwg/http-extensions/pull/1040</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/1047">https://github.com/httpwg/http-extensions/pull/1047</eref>.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-06">
        <name>draft-ietf-httpbis-rfc6265bis-06</name>
        <ul spacing="normal">
          <li>
            <t>Editorial fixes: <eref target="https://github.com/httpwg/http-extensions/issues/1059">https://github.com/httpwg/http-extensions/issues/1059</eref>,
<eref target="https://github.com/httpwg/http-extensions/issues/1158">https://github.com/httpwg/http-extensions/issues/1158</eref>.</t>
          </li>
          <li>
            <t>Created a registry for cookie attribute names:
<eref target="https://github.com/httpwg/http-extensions/pull/1060">https://github.com/httpwg/http-extensions/pull/1060</eref>.</t>
          </li>
          <li>
            <t>Tweaks to ABNF for <tt>cookie-pair</tt> and the <tt>Cookie</tt> header
production: <eref target="https://github.com/httpwg/http-extensions/issues/1074">https://github.com/httpwg/http-extensions/issues/1074</eref>,
<eref target="https://github.com/httpwg/http-extensions/issues/1119">https://github.com/httpwg/http-extensions/issues/1119</eref>.</t>
          </li>
          <li>
            <t>Fixed serialization for nameless/valueless cookies:
<eref target="https://github.com/httpwg/http-extensions/pull/1143">https://github.com/httpwg/http-extensions/pull/1143</eref>.</t>
          </li>
          <li>
            <t>Converted a normative reference to Mozilla's Public Suffix List <xref target="PSL"/> into
an informative reference:
<eref target="https://github.com/httpwg/http-extensions/issues/1159">https://github.com/httpwg/http-extensions/issues/1159</eref>.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-07">
        <name>draft-ietf-httpbis-rfc6265bis-07</name>
        <ul spacing="normal">
          <li>
            <t>Moved instruction to ignore cookies with empty cookie-name and cookie-value
from <xref target="set-cookie"/> to <xref target="storage-model"/> to ensure that they apply to cookies
created without parsing a cookie string:
<eref target="https://github.com/httpwg/http-extensions/issues/1234">https://github.com/httpwg/http-extensions/issues/1234</eref>.</t>
          </li>
          <li>
            <t>Add a default enforcement value to the <tt>same-site-flag</tt>, equivalent to
"SameSite=Lax":
<eref target="https://github.com/httpwg/http-extensions/pull/1325">https://github.com/httpwg/http-extensions/pull/1325</eref>.</t>
          </li>
          <li>
            <t>Require a Secure attribute for "SameSite=None":
<eref target="https://github.com/httpwg/http-extensions/pull/1323">https://github.com/httpwg/http-extensions/pull/1323</eref>.</t>
          </li>
          <li>
            <t>Consider scheme when running the same-site algorithm:
 <eref target="https://github.com/httpwg/http-extensions/pull/1324">https://github.com/httpwg/http-extensions/pull/1324</eref>.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-08">
        <name>draft-ietf-httpbis-rfc6265bis-08</name>
        <ul spacing="normal">
          <li>
            <t>Define "same-site" for reload navigation requests, e.g. those triggered via
user interface elements:
<eref target="https://github.com/httpwg/http-extensions/pull/1384">https://github.com/httpwg/http-extensions/pull/1384</eref></t>
          </li>
          <li>
            <t>Consider redirects when defining same-site:
<eref target="https://github.com/httpwg/http-extensions/pull/1348">https://github.com/httpwg/http-extensions/pull/1348</eref></t>
          </li>
          <li>
            <t>Align on using HTML terminology for origins:
<eref target="https://github.com/httpwg/http-extensions/pull/1416">https://github.com/httpwg/http-extensions/pull/1416</eref></t>
          </li>
          <li>
            <t>Modify cookie parsing and creation algorithms in <xref target="set-cookie"/> and
<xref target="storage-model"/> to explicitly handle control characters:
<eref target="https://github.com/httpwg/http-extensions/pull/1420">https://github.com/httpwg/http-extensions/pull/1420</eref></t>
          </li>
          <li>
            <t>Refactor cookie retrieval algorithm to support non-HTTP APIs:
<eref target="https://github.com/httpwg/http-extensions/pull/1428">https://github.com/httpwg/http-extensions/pull/1428</eref></t>
          </li>
          <li>
            <t>Define "Lax-allowing-unsafe" SameSite enforcement mode:
<eref target="https://github.com/httpwg/http-extensions/pull/1435">https://github.com/httpwg/http-extensions/pull/1435</eref></t>
          </li>
          <li>
            <t>Consistently use "header field" (vs 'header"):
<eref target="https://github.com/httpwg/http-extensions/pull/1527">https://github.com/httpwg/http-extensions/pull/1527</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-09">
        <name>draft-ietf-httpbis-rfc6265bis-09</name>
        <ul spacing="normal">
          <li>
            <t>Update cookie size requirements:
<eref target="https://github.com/httpwg/http-extensions/pull/1563">https://github.com/httpwg/http-extensions/pull/1563</eref></t>
          </li>
          <li>
            <t>Reject cookies with control characters:
<eref target="https://github.com/httpwg/http-extensions/pull/1576">https://github.com/httpwg/http-extensions/pull/1576</eref></t>
          </li>
          <li>
            <t>No longer treat horizontal tab as a control character:
<eref target="https://github.com/httpwg/http-extensions/pull/1589">https://github.com/httpwg/http-extensions/pull/1589</eref></t>
          </li>
          <li>
            <t>Specify empty domain attribute handling:
<eref target="https://github.com/httpwg/http-extensions/pull/1709">https://github.com/httpwg/http-extensions/pull/1709</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-10">
        <name>draft-ietf-httpbis-rfc6265bis-10</name>
        <ul spacing="normal">
          <li>
            <t>Standardize Max-Age/Expires upper bound:
<eref target="https://github.com/httpwg/http-extensions/pull/1732">https://github.com/httpwg/http-extensions/pull/1732</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/1980">https://github.com/httpwg/http-extensions/pull/1980</eref>.</t>
          </li>
          <li>
            <t>Expand on privacy considerations and third-party cookies:
<eref target="https://github.com/httpwg/http-extensions/pull/1878">https://github.com/httpwg/http-extensions/pull/1878</eref></t>
          </li>
          <li>
            <t>Specify that no decoding of Set-Cookie line should occur:
<eref target="https://github.com/httpwg/http-extensions/pull/1902">https://github.com/httpwg/http-extensions/pull/1902</eref></t>
          </li>
          <li>
            <t>Require ASCII for domain attributes:
<eref target="https://github.com/httpwg/http-extensions/pull/1969">https://github.com/httpwg/http-extensions/pull/1969</eref></t>
          </li>
          <li>
            <t>Typos, formatting and editorial fixes:
<eref target="https://github.com/httpwg/http-extensions/pull/1789">https://github.com/httpwg/http-extensions/pull/1789</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/1858">https://github.com/httpwg/http-extensions/pull/1858</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/2069">https://github.com/httpwg/http-extensions/pull/2069</eref>.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-11">
        <name>draft-ietf-httpbis-rfc6265bis-11</name>
        <ul spacing="normal">
          <li>
            <t>Remove note to ignore Domain attribute with trailing dot:
<eref target="https://github.com/httpwg/http-extensions/pull/2087">https://github.com/httpwg/http-extensions/pull/2087</eref>,
<eref target="https://github.com/httpwg/http-extensions/pull/2092">https://github.com/httpwg/http-extensions/pull/2092</eref>.</t>
          </li>
          <li>
            <t>Remove an inadvertant change to cookie-octet:
<eref target="https://github.com/httpwg/http-extensions/pull/2090">https://github.com/httpwg/http-extensions/pull/2090</eref></t>
          </li>
          <li>
            <t>Remove note regarding cookie serialization:
<eref target="https://github.com/httpwg/http-extensions/pull/2165">https://github.com/httpwg/http-extensions/pull/2165</eref></t>
          </li>
          <li>
            <t>Add case insensitivity note to Set-Cookie Syntax:
<eref target="https://github.com/httpwg/http-extensions/pull/2167">https://github.com/httpwg/http-extensions/pull/2167</eref></t>
          </li>
          <li>
            <t>Add note not to send invalid cookies due to public suffix list changes:
<eref target="https://github.com/httpwg/http-extensions/pull/2215">https://github.com/httpwg/http-extensions/pull/2215</eref></t>
          </li>
          <li>
            <t>Add warning to not send nameless cookies:
<eref target="https://github.com/httpwg/http-extensions/pull/2220">https://github.com/httpwg/http-extensions/pull/2220</eref></t>
          </li>
          <li>
            <t>Add note regarding Service Worker's computation of "site for cookies":
<eref target="https://github.com/httpwg/http-extensions/pull/2217">https://github.com/httpwg/http-extensions/pull/2217</eref></t>
          </li>
          <li>
            <t>Compare cookie name prefixes case-insensitively:
<eref target="https://github.com/httpwg/http-extensions/pull/2236">https://github.com/httpwg/http-extensions/pull/2236</eref></t>
          </li>
          <li>
            <t>Update editors and the acknowledgements
<eref target="https://github.com/httpwg/http-extensions/pull/2244">https://github.com/httpwg/http-extensions/pull/2244</eref></t>
          </li>
          <li>
            <t>Prevent nameless cookies with prefixed values
<eref target="https://github.com/httpwg/http-extensions/pull/2251">https://github.com/httpwg/http-extensions/pull/2251</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-12">
        <name>draft-ietf-httpbis-rfc6265bis-12</name>
        <ul spacing="normal">
          <li>
            <t>Advise the reader which section to implement
<eref target="https://github.com/httpwg/http-extensions/pull/2478">https://github.com/httpwg/http-extensions/pull/2478</eref></t>
          </li>
          <li>
            <t>Define top-level navigation
<eref target="https://github.com/httpwg/http-extensions/pull/2481">https://github.com/httpwg/http-extensions/pull/2481</eref></t>
          </li>
          <li>
            <t>Use navigables concept
<eref target="https://github.com/httpwg/http-extensions/pull/2478">https://github.com/httpwg/http-extensions/pull/2478</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-14">
        <name>draft-ietf-httpbis-rfc6265bis-14</name>
        <ul spacing="normal">
          <li>
            <t>Refactor cookie header text
<eref target="https://github.com/httpwg/http-extensions/pull/2753">https://github.com/httpwg/http-extensions/pull/2753</eref></t>
          </li>
          <li>
            <t>Support potentially trustworthy origins
<eref target="https://github.com/httpwg/http-extensions/pull/2759">https://github.com/httpwg/http-extensions/pull/2759</eref></t>
          </li>
          <li>
            <t>Add additional developer warnings for SameSite cookies
<eref target="https://github.com/httpwg/http-extensions/pull/2758">https://github.com/httpwg/http-extensions/pull/2758</eref></t>
          </li>
          <li>
            <t>Remove consideration of same-site redirect chain
<eref target="https://github.com/httpwg/http-extensions/pull/2750">https://github.com/httpwg/http-extensions/pull/2750</eref></t>
          </li>
        </ul>
      </section>
    </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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
q1ZhosNzsKP5JpwmzG4NjdJExJgjBDq2aPJBhfxhFOXaQlTxU7R0SWF2AHua
ap+MS3F3jnt9vJ+gtI4HxyOUuOBqOLXH86JSuvzapaa53CL6/6IETWO1P7gD
pIGJOaxRQV2hxLFjUR1chpU50wQkFV6Z+Xo4zGLrJcv7LL3X8wfovPg6KYh3
XRgul/GU/GIlw+W6kj9XsB9fdApNYKWjqB46uMEg6NkPd20tF61kYF+A8l8/
93ReiWdIQlggGATm1t5C8GcZRUcU0q5smeyWIBX7tgNHmoWRrzUFwUedGzmg
OMST0++QspwsFjEXIubkUC/Xr7akfrVwmdKhEX9zc45uIPPWmcCbrc2Mr8J8
v2JIUazWFnZgTAKnc3DMAfcqIQkps2bFBuIg9N7kpb8lCoTmteogdCLwM9ty
Lt8hhab2UL85jjl6tvDcSZ+O9IEgVYzDal9rpZ4gdokDFksuvP2GSjcCXXhP
W6ehJpl6d/GcGcPgsQ2plhTrlrDZWdhOVZ4Uss4Z9mx12Y5cE/AaDyP9GqjS
gVwTNwiYiA9Lt8SjnRGnvbjX0a1Uw9RXBfEmdzL3rY9rZx+4vELBJescE4x/
Jt22U39EWAk6290Fa4aS+L8s3mU25zVmaVQpRbew7ITbsEpDqy5dwVOZplQ7
LofO8JFY9o7SeVSKc06B5VLeta/ZE5/Yoe/W8Aikpj5sVq14uE8YnpdxT4wO
d2s0045oderkppNCUEV0ikjZA/Wr2b/kY/PjV2TNFHyVibPRxbJqu/qBnV0U
+DYO50iVjSaiV1mQ2o5lRu7tqK2lgnQlUq91aWdKSIUUKXh0XBJyq1Uc5sFV
DhdFpxSpcxzJ8G242MW7bD1RVtWalzAAgp1tlCuvKRQlW0dlESCQNkBica7M
wM/Fa/EUBRESbyvIUcu81SI/SXLAXqEs1oyAGPuDS8HwbpmenLLAUAPt67fI
Nrak8w8/gu2ZQ3XJhEPkXaNkXXN7OlJNEuxe+13WZo+fY2448i5P2bKi4IVf
3merTPZ9sm+KTi0pXG+bOndip0XpoN4W8k12pCqJJaKHuXke+FO+K187lDMi
SxPe27HMVzv8GdamxA8sB/N8LLtdedjeBe3W9E9oP1KkktmRSEITCXxvLlu9
oe8GqsnuJE8jqzy4KIF7p5KV7oZzAvo3QcSHCgc/Mdv3hFl6setss/TbfRDy
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

-->

</rfc>
