<?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-rfc2629 version 1.5.10 -->
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="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-09" category="std" obsoletes="6265" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title>Cookies: HTTP State Management Mechanism</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-09"/>
    <author initials="L." surname="Chen" fullname="Lily Chen" role="editor">
      <organization>Google LLC</organization>
      <address>
        <email>chlily@google.com</email>
      </address>
    </author>
    <author initials="S." surname="Englehardt" fullname="Steven Englehardt" role="editor">
      <organization>Mozilla</organization>
      <address>
        <email>senglehardt@mozilla.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>
      <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>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the HTTP working group mailing list
(ietf-http-wg@w3.org), which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/">https://lists.w3.org/Archives/Public/ietf-http-wg/</eref>.</t>
      <t>Working Group information can be found at <eref target="http://httpwg.github.io/">http://httpwg.github.io/</eref>; source
code and issues list for this draft can be found at <eref target="https://github.com/httpwg/http-extensions/labels/6265bis">https://github.com/httpwg/http-extensions/labels/6265bis</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <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 URI schemes 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" format="default"/> when generating cookies.</t>
      <t>User agents MUST implement the more liberal processing rules defined in <xref target="ua-requirements" format="default"/>, in order to maximize interoperability with existing servers that do not
conform to the well-behaved profile defined in <xref target="sane-profile" format="default"/>.</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" format="default"/> represent a preferred subset of current
server behavior, and even the more liberal cookie processing algorithm provided
in <xref target="ua-requirements" format="default"/> 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" format="default"/>.</t>
    </section>
    <section anchor="conventions" numbered="true" toc="default">
      <name>Conventions</name>
      <section anchor="conformance-criteria" numbered="true" toc="default">
        <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" format="default"/>.</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" numbered="true" toc="default">
        <name>Syntax Notation</name>
        <t>This specification uses the Augmented Backus-Naur Form (ABNF) notation of
<xref target="RFC5234" format="default"/>.</t>
        <t>The following core rules are included by reference, as defined in <xref target="RFC5234" format="default"/>,
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" format="default"/> character), VCHAR (any visible <xref target="USASCII" format="default"/> 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" format="default"/>.</t>
      </section>
      <section anchor="terminology" numbered="true" toc="default">
        <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" format="default"/>, 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" format="default"/>.</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" format="default"/>.</t>
        <t>The term string means a sequence of non-NUL octets.</t>
        <t>The terms "active document", "ancestor browsing context", "browsing context",
"dedicated worker", "Document", "nested browsing context", "opaque origin",
"parent browsing context", "sandboxed origin browsing context flag", "shared
worker", "the worker's Documents", "top-level browsing context", and
"WorkerGlobalScope" are defined in <xref target="HTML" format="default"/>.</t>
        <t>"Service Workers" are defined in the Service Workers specification
<xref target="SERVICE-WORKERS" format="default"/>.</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" format="default"/>.</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" format="default"/>.</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" format="default"/>.</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" format="default"/>.</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>
      </section>
    </section>
    <section anchor="overview" numbered="true" toc="default">
      <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" format="default"/>) 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" format="default"/>).</t>
      <section anchor="examples" numbered="true" toc="default">
        <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" format="default"/>).</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>
    <section anchor="sane-profile" numbered="true" toc="default">
      <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <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
                    / %x80-FF
                      ; octets 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
                      ; In practice, both expires-av and max-age-av
                      ; are limited to dates representable by the
                      ; user agent.
non-zero-digit    = %x31-39
                      ; digits 1 through 9
domain-av         = "Domain" BWS "=" BWS domain-value
domain-value      = <subdomain>
                      ; defined in [RFC1034], Section 3.5, as
                      ; enhanced by [RFC1123], Section 2.1
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" format="default"/>).</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" format="default"/>.</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 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" format="default"/> for how user agents handle this case.)</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" format="default"/> 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" numbered="true" toc="default">
          <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" format="default"/>.</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" numbered="true" toc="default">
            <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>
          </section>
          <section anchor="attribute-max-age" numbered="true" toc="default">
            <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>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" numbered="true" toc="default">
            <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, but a trailing %x2E ("."), if present, will cause the user agent to
ignore the attribute.)  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" format="default"/> for
more information.)</t>
          </section>
          <section anchor="attribute-path" numbered="true" toc="default">
            <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" format="default"/> 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" format="default"/>).</t>
          </section>
          <section anchor="attribute-secure" numbered="true" toc="default">
            <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" format="default"/>).</t>
          </section>
          <section anchor="attribute-httponly" numbered="true" toc="default">
            <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" numbered="true" toc="default">
            <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" format="default"/>. 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" format="default"/>. 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="cookie-name-prefixes" numbered="true" toc="default">
          <name>Cookie Name Prefixes</name>
          <t><xref target="weak-confidentiality" format="default"/> and <xref target="weak-integrity" format="default"/> 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 normative requirements for the prefixes described below are detailed in the
storage model algorithm defined in <xref target="storage-model" format="default"/>.</t>
          <section anchor="the-secure-prefix" numbered="true" toc="default">
            <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" numbered="true" toc="default">
            <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" numbered="true" toc="default">
        <name>Cookie</name>
        <section anchor="syntax" numbered="true" toc="default">
          <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" format="default"/> (and the user agent
conforms to the requirements in <xref target="ua-requirements" format="default"/>), 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>
        </section>
        <section anchor="semantics" numbered="true" toc="default">
          <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" numbered="true" toc="default">
      <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" format="default"/>).</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" format="default"/>).
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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <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>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.</li>
                <li>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.</li>
                <li>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.</li>
                <li>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.</li>
              </ol>
            </li>
            <li>If the year-value is greater than or equal to 70 and less than or equal to
99, increment the year-value by 1900.</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>NOTE: Some existing user agents interpret two-digit years differently.</li>
              </ol>
            </li>
            <li>
              <t>Abort these steps and fail to parse the cookie-date if:  </t>
              <ul spacing="normal">
                <li>at least one of the found-day-of-month, found-month, found-year, or
found-time flags is not set,</li>
                <li>the day-of-month-value is less than 1 or greater than 31,</li>
                <li>the year-value is less than 1601,</li>
                <li>the hour-value is greater than 23,</li>
                <li>the minute-value is greater than 59, or</li>
                <li>the second-value is greater than 59.</li>
              </ul>
              <t>
(Note that leap seconds cannot be represented in this syntax.)</t>
            </li>
            <li>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.</li>
            <li>Return the parsed-cookie-date as the result of this algorithm.</li>
          </ol>
        </section>
        <section anchor="canonicalized-host-names" numbered="true" toc="default">
          <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>Convert the host name to a sequence of individual domain name labels.</li>
            <li>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" format="default"/> for the former and latter), or
to a "punycode label" (a label resulting from the "ToASCII" conversion in
Section 4 of <xref target="RFC3490" format="default"/>), as appropriate (see <xref target="idna-migration" format="default"/> of this
specification).</li>
            <li>Concatenate the resulting labels, separated by a %x2E (".") character.</li>
          </ol>
        </section>
        <section anchor="domain-matching" numbered="true" toc="default">
          <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>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.)</li>
            <li>
              <t>All of the following conditions hold:  </t>
              <ul spacing="normal">
                <li>The domain string is a suffix of the string.</li>
                <li>The last character of the string that is not included in the domain
string is a %x2E (".") character.</li>
                <li>The string is a host name (i.e., not an IP address).</li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="cookie-path" numbered="true" toc="default">
          <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>Let uri-path be the path portion of the request-uri if such a portion
exists (and empty otherwise).</li>
            <li>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.</li>
            <li>If the uri-path contains no more than one %x2F ("/") character, output
%x2F ("/") and skip the remaining step.</li>
            <li>Output the characters of the uri-path from the first character up to, but
not including, the right-most %x2F ("/").</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" format="default"/> for equivalence of the
path component, and hence two equivalent paths can have different cookies.</t>
            </li>
            <li>The cookie-path is a prefix of the request-path, and the last character
of the cookie-path is %x2F ("/").</li>
            <li>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.</li>
          </ul>
        </section>
      </section>
      <section anchor="same-site-requests" numbered="true" toc="default">
        <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" format="default"/>. A request is "same-site" if the following criteria are true:</t>
        <ol spacing="normal" type="1"><li>The request is not the result of a cross-site redirect. That is,
the origin of every url in the request's url list is same-site with the
request's current url's origin.</li>
          <li>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).</li>
          <li>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.</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" numbered="true" toc="default">
          <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 browsing
context's active document's origin, as the "top-level origin".</t>
          <t>For a document displayed in a top-level browsing context, we can stop here: the
document's "site for cookies" is the top-level origin.</t>
          <t>For documents which are displayed in nested browsing contexts, we need to audit
the origins of each of a document's ancestor browsing contexts' active documents
in order to account for the "multiple-nested scenarios" described in Section 4
of <xref target="RFC7034" format="default"/>. 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>Let <tt>top-document</tt> be the active document in <tt>document</tt>'s browsing context's
top-level browsing context.</li>
            <li>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.</li>
            <li>Let <tt>documents</tt> be a list containing <tt>document</tt> and each of <tt>document</tt>'s
ancestor browsing contexts' active documents.</li>
            <li>
              <t>For each <tt>item</tt> in <tt>documents</tt>:  </t>
              <ol spacing="normal" type="1"><li>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.</li>
                <li>If <tt>origin</tt> is not same-site with <tt>top-origin</tt>, return an origin set to
an opaque origin.</li>
              </ol>
            </li>
            <li>Return <tt>top-origin</tt>.</li>
          </ol>
        </section>
        <section anchor="worker-requests" numbered="true" toc="default">
          <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 browsing context and a worker.
This is especially true for Service Workers <xref target="SERVICE-WORKERS" format="default"/>, 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" numbered="true" toc="default">
            <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>Let <tt>site</tt> be <tt>worker</tt>'s origin.</li>
              <li>
                <t>For each <tt>document</tt> in <tt>worker</tt>'s Documents:  </t>
                <ol spacing="normal" type="1"><li>Let <tt>document-site</tt> be <tt>document</tt>'s "site for cookies" (as defined
in <xref target="document-requests" format="default"/>).</li>
                  <li>If <tt>document-site</tt> is not same-site with <tt>site</tt>, return an origin
set to an opaque origin.</li>
                </ol>
              </li>
              <li>Return <tt>site</tt>.</li>
            </ol>
          </section>
          <section anchor="service-workers" numbered="true" toc="default">
            <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>Requests which simply pass through a Service Worker will be handled as described
above: the request's client will be the Document or Worker which initiated the
request, and its "site for cookies" will be those defined in
<xref target="document-requests" format="default"/> and <xref target="dedicated-and-shared-requests" format="default"/></t>
            <t>Requests which are initiated by the Service Worker itself (via a direct call to
<tt>fetch()</tt>, for instance), on the other hand, will have a client which is a
ServiceWorkerGlobalScope. Its "site for cookies" will be the Service Worker's
URI's origin.</t>
            <t>Given a ServiceWorkerGlobalScope (<tt>worker</tt>), the following algorithm returns its
"site for cookies":</t>
            <ol spacing="normal" type="1"><li>Return <tt>worker</tt>'s origin.</li>
            </ol>
          </section>
        </section>
      </section>
      <section anchor="ignoring-cookies" numbered="true" toc="default">
        <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" format="default"/>).</t>
        <t>All other Set-Cookie header fields SHOULD be processed according to <xref target="set-cookie" format="default"/>.
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="set-cookie" numbered="true" toc="default">
        <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" format="default"/>).</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" format="default"/>.
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" format="default"/> 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" format="default"/>. User agents use this algorithm
so as to interoperate with servers that do not follow the recommendations in
<xref target="sane-profile" format="default"/>.</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>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>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.</li>
          <li>
            <t>If the set-cookie-string contains a %x3B (";") character:  </t>
            <ol spacing="normal" type="1"><li>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).</li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>The name-value-pair string consists of all the characters contained in
the set-cookie-string, and the unparsed-attributes is the empty
string.</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>Remove any leading or trailing WSP characters from the name string and the
value string.</li>
          <li>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.</li>
          <li>The cookie-name is the name string, and the cookie-value is the value string.</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>If the unparsed-attributes string is empty, skip the rest of these steps.</li>
          <li>Discard the first character of the unparsed-attributes (which will be a
%x3B (";") character).</li>
          <li>
            <t>If the remaining unparsed-attributes contains a %x3B (";") character:  </t>
            <ol spacing="normal" type="1"><li>Consume the characters of the unparsed-attributes up to, but not
including, the first %x3B (";") character.</li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>Consume the remainder of the unparsed-attributes.</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>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.</li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>The attribute-name string consists of the entire cookie-av string,
and the attribute-value string is empty.</li>
            </ol>
          </li>
          <li>Remove any leading or trailing WSP characters from the attribute-name
string and the attribute-value string.</li>
          <li>If the attribute-value is longer than 1024 octets, ignore the cookie-av
string and return to Step 1 of this algorithm.</li>
          <li>Process the attribute-name and attribute-value according to the
requirements in the following subsections. (Notice that attributes with
unrecognized attribute-names are ignored.)</li>
          <li>Return to Step 1 of this algorithm.</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" format="default"/>
for additional requirements triggered by receiving a cookie.)</t>
        <section anchor="the-expires-attribute" numbered="true" toc="default">
          <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>Let the expiry-time be the result of parsing the attribute-value as
cookie-date (see <xref target="cookie-date" format="default"/>).</li>
            <li>If the attribute-value failed to parse as a cookie date, ignore the
cookie-av.</li>
            <li>If the expiry-time is later than the last date the user agent can
represent, the user agent MAY replace the expiry-time with the last
representable date.</li>
            <li>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.</li>
            <li>Append an attribute to the cookie-attribute-list with an attribute-name
of Expires and an attribute-value of expiry-time.</li>
          </ol>
        </section>
        <section anchor="the-max-age-attribute" numbered="true" toc="default">
          <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>If the first character of the attribute-value is not a DIGIT or a "-"
character, ignore the cookie-av.</li>
            <li>If the remainder of attribute-value contains a non-DIGIT character, ignore
the cookie-av.</li>
            <li>Let delta-seconds be the attribute-value converted to an integer.</li>
            <li>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.</li>
            <li>Append an attribute to the cookie-attribute-list with an attribute-name
of Max-Age and an attribute-value of expiry-time.</li>
          </ol>
        </section>
        <section anchor="the-domain-attribute" numbered="true" toc="default">
          <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>Let cookie-domain be the attribute-value.</li>
            <li>If cookie-domain starts with %x2E ("."), let cookie-domain be cookie-domain
without its leading %x2E (".").</li>
            <li>Convert the cookie-domain to lower case.</li>
            <li>Append an attribute to the cookie-attribute-list with an attribute-name
of Domain and an attribute-value of cookie-domain.</li>
          </ol>
        </section>
        <section anchor="the-path-attribute" numbered="true" toc="default">
          <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>Let cookie-path be the default-path.</li>
              </ol>
              <t>
Otherwise:  </t>
              <ol spacing="normal" type="1"><li>Let cookie-path be the attribute-value.</li>
              </ol>
            </li>
            <li>Append an attribute to the cookie-attribute-list with an attribute-name
of Path and an attribute-value of cookie-path.</li>
          </ol>
        </section>
        <section anchor="the-secure-attribute" numbered="true" toc="default">
          <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" numbered="true" toc="default">
          <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" numbered="true" toc="default">
          <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>Let <tt>enforcement</tt> be "Default".</li>
            <li>If cookie-av's attribute-value is a case-insensitive match for "None",
set <tt>enforcement</tt> to "None".</li>
            <li>If cookie-av's attribute-value is a case-insensitive match for "Strict",
set <tt>enforcement</tt> to "Strict".</li>
            <li>If cookie-av's attribute-value is a case-insensitive match for "Lax", set
<tt>enforcement</tt> to "Lax".</li>
            <li>Append an attribute to the cookie-attribute-list with an attribute-name
of "SameSite" and an attribute-value of <tt>enforcement</tt>.</li>
          </ol>
          <section anchor="strict-lax" numbered="true" toc="default">
            <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" format="default"/>, 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" format="default"/>
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" format="default"/>); 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>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" format="default"/>), which
is only a speedbump along the road to exploitation.</li>
              <li>Features like <tt>&lt;link rel='prerender'&gt;</tt> <xref target="prerendering" format="default"/> can be exploited
to create "same-site" requests without the risk of user detection.</li>
            </ol>
            <t>When possible, developers should use a session management mechanism such as
that described in <xref target="top-level-navigations" format="default"/> to mitigate the risk of CSRF more
completely.</t>
          </section>
          <section anchor="lax-allowing-unsafe" numbered="true" toc="default">
            <name>"Lax-Allowing-Unsafe" enforcement</name>
            <t>As discussed in <xref target="unsafe-top-level-requests" format="default"/>, 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" format="default"/>. (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" format="default"/>.)</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" format="default"/>:</t>
            <t>Replace the condition in the penultimate bullet point of step 1 of the retrieval
algorithm reading</t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
 * The HTTP request associated with the retrieval uses a "safe" method.
]]></artwork>
            <t>with</t>
            <artwork name="" type="" align="left" alt=""><![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" numbered="true" toc="default">
        <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>A user agent MAY ignore a received cookie in its entirety. See
<xref target="ignoring-cookies" format="default"/>.</li>
          <li>If cookie-name is empty and cookie-value is empty, abort these steps and
ignore the cookie entirely.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</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>Set the cookie's persistent-flag to true.</li>
              <li>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".</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>Set the cookie's persistent-flag to true.</li>
              <li>Set the cookie's expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
"Expires".</li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>Set the cookie's persistent-flag to false.</li>
              <li>Set the cookie's expiry-time to the latest representable date.</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>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, but a trailing %x2E ("."), if present, will cause
the user agent to ignore the attribute.)</li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>Let the domain-attribute be the empty string.</li>
            </ol>
          </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>Let the domain-attribute be the empty string.</li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>Ignore the cookie entirely and abort these steps.</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>Ignore the cookie entirely and abort these steps.</li>
                </ol>
                <t>
Otherwise:      </t>
                <ol spacing="normal" type="1"><li>Set the cookie's host-only-flag to false.</li>
                  <li>Set the cookie's domain to the domain-attribute.</li>
                </ol>
              </li>
            </ol>
            <t>
Otherwise:  </t>
            <ol spacing="normal" type="1"><li>Set the cookie's host-only-flag to true.</li>
              <li>Set the cookie's domain to the canonicalized request-host.</li>
            </ol>
          </li>
          <li>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.</li>
          <li>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.</li>
          <li>If the scheme component of the request-uri does not denote a "secure"
    protocol (as defined by the user agent), and the cookie's secure-only-flag
    is true, then abort these steps and ignore the cookie entirely.</li>
          <li>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.</li>
          <li>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.</li>
          <li>
            <t>If the cookie's secure-only-flag is false, and the scheme component of
request-uri does not denote a "secure" protocol, 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>Their name matches the name of the newly-created cookie.</li>
              <li>Their secure-only-flag is true.</li>
              <li>Their domain domain-matches the domain of the newly-created cookie, or
vice-versa.</li>
              <li>The path of the newly-created cookie path-matches the path of the
existing cookie.</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>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".</li>
          <li>
            <t>If the cookie's <tt>same-site-flag</tt> is not "None":  </t>
            <ol spacing="normal" type="1"><li>If the cookie was received from a "non-HTTP" API, and the API was called
from a browsing context'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.</li>
              <li>If the cookie was received from a "same-site" request (as defined in
<xref target="same-site-requests" format="default"/>), skip the remaining substeps and continue
processing the cookie.</li>
              <li>
                <t>If the cookie was received from a request which is navigating a
top-level browsing context <xref target="HTML" format="default"/> (e.g. if the request's "reserved
client" is either <tt>null</tt> or an environment whose "target browsing
context" is a top-level browing context), 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>Abort these steps and ignore the newly created cookie entirely.</li>
            </ol>
          </li>
          <li>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.</li>
          <li>If the cookie-name begins with a case-sensitive match for the string
"__Secure-", abort these steps and ignore the cookie entirely unless the
cookie's secure-only-flag is true.</li>
          <li>
            <t>If the cookie-name begins with a case-sensitive 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>The cookie's secure-only-flag is true.</li>
              <li>The cookie's host-only-flag is true.</li>
              <li>The cookie-attribute-list contains an attribute with an attribute-name
of "Path", and the cookie's path is <tt>/</tt>.</li>
            </ol>
          </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>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.)</li>
              <li>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.</li>
              <li>Update the creation-time of the newly-created cookie to match the
creation-time of the old-cookie.</li>
              <li>Remove the old-cookie from the cookie store.</li>
            </ol>
          </li>
          <li>Insert the newly-created cookie into the cookie store.</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>Expired cookies.</li>
          <li>Cookies whose secure-only-flag is false, and which share a domain field
with more than a predetermined number of other cookies.</li>
          <li>Cookies that share a domain field with more than a predetermined number of
other cookies.</li>
          <li>All cookies.</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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <name>The Cookie Header Field</name>
          <t>The user agent includes stored cookies in the Cookie HTTP request header field.</t>
          <t>When the user agent generates an HTTP request, the user agent MUST NOT attach
more than one Cookie 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" format="default"/>).</t>
          <t>If the user agent does attach a Cookie header field to an HTTP request, the
user agent MUST compute the cookie-string following the algorithm defined in
<xref target="retrieval-algorithm" format="default"/>, 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" format="default"/>, and the retrieval's type is "HTTP".</t>
        </section>
        <section anchor="non-http" numbered="true" toc="default">
          <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" format="default"/>).</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" format="default"/>, where the
retrieval's URI is defined by the caller (see <xref target="DOM-DOCUMENT-COOKIE" format="default"/>), 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" format="default"/> (otherwise it is "cross-site"), and the retrieval's type
is "non-HTTP".</t>
        </section>
        <section anchor="retrieval-algorithm" numbered="true" toc="default">
          <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>The cookie's host-only-flag is true and the canonicalized
host of the retrieval's URI is identical to the cookie's domain.</li>
                  </ul>
                  <t>
Or:      </t>
                  <ul spacing="normal">
                    <li>The cookie's host-only-flag is false and the canonicalized
host of the retrieval's URI domain-matches the cookie's domain.</li>
                  </ul>
                </li>
                <li>The retrieval's URI's path path-matches the cookie's path.</li>
                <li>
                  <t>If the cookie's secure-only-flag is true, then the retrieval's URI's
scheme must denote a "secure" protocol (as defined by the user agent).      </t>
                  <t>
NOTE: The notion of a "secure" protocol is not defined by this document.
Typically, user agents consider a protocol secure if the protocol makes
use of transport-layer security, such as SSL or TLS. For example, most
user agents consider "https" to be a scheme that denotes a secure
protocol.</t>
                </li>
                <li>If the cookie's http-only-flag is true, then exclude the cookie if the
retrieval's type is "non-HTTP".</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>The retrieval's type is "HTTP".</li>
                    <li>The same-site-flag is "Lax" or "Default".</li>
                    <li>The HTTP request associated with the retrieval uses a "safe" method.</li>
                    <li>The target browsing context of the HTTP request associated with the
retrieval is a top-level browsing context.</li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>The user agent SHOULD sort the cookie-list in the following order:  </t>
              <ul spacing="normal">
                <li>Cookies with longer paths are listed before cookies with shorter
paths.</li>
                <li>Among cookies that have equal-length path fields, cookies with earlier
creation-times are listed before cookies with later creation-times.</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>Update the last-access-time of each cookie in the cookie-list to the
current date and time.</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>If the cookies' name is not empty, output the cookie's name followed by
the %x3D ("=") character.</li>
                <li>If the cookies' value is not empty, output the cookie's value.</li>
                <li>If there is an unprocessed cookie in the cookie-list, output the
characters %x3B and %x20 ("; ").</li>
              </ol>
            </li>
          </ol>
          <t>NOTE: Despite its name, the cookie-string is actually a sequence of octets, not
a sequence of characters.  To convert the cookie-string (or components
thereof) into a sequence of characters (e.g., for presentation to the user),
the user agent might wish to try using the UTF-8 character encoding <xref target="RFC3629" format="default"/>
to decode the octet sequence. This decoding might fail, however, because not
every sequence of octets is valid UTF-8.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-considerations" numbered="true" toc="default">
      <name>Implementation Considerations</name>
      <section anchor="limits" numbered="true" toc="default">
        <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>At least 50 cookies per domain.</li>
          <li>At least 3000 cookies total.</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" format="default"/>.</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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>IDNA Dependency and Migration</name>
        <t>IDNA2008 <xref target="RFC5890" format="default"/> supersedes IDNA2003 <xref target="RFC3490" format="default"/>. 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" format="default"/> and MAY
implement <xref target="UTS46" format="default"/> or <xref target="RFC5895" format="default"/> in order to facilitate their IDNA transition.
If a user agent does not implement IDNA2008, the user agent MUST implement
IDNA2003 <xref target="RFC3490" format="default"/>.</t>
      </section>
    </section>
    <section anchor="privacy-considerations" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>Cookies are often criticized for letting servers track users. For example, a
number of "web analytics" companies use cookies to recognize when a user returns
to a web site or visits another web site. Although cookies are not the only
mechanism servers can use to track users across HTTP requests, cookies
facilitate tracking because they are persistent across user agent sessions and
can be shared between hosts.</t>
      <section anchor="third-party-cookies" numbered="true" toc="default">
        <name>Third-Party Cookies</name>
        <t>Particularly worrisome are so-called "third-party" cookies. In rendering an HTML
document, a user agent often requests resources from other servers (such as
advertising networks). These third-party servers can use cookies to track the
user even if the user never visits the server directly. For example, if a user
visits a site that contains content from a third party and then later visits
another site that contains content from the same third party, the third party
can track the user between the two sites.</t>
        <t>Given this risk to user privacy, some user agents restrict how third-party
cookies behave, and those restrictions vary widly. For instance, user agents
might block third-party cookies entirely by refusing to send Cookie header fields or
process Set-Cookie header fields during third-party requests. They might take a less
draconian approach by partitioning cookies based on the first-party context,
sending one set of cookies to a given third party in one first-party context,
and another to the same third party in another. Or they might even allow some
third-party cookies but block others depending on user-agent cookie policy or
user controls.</t>
        <t>This document grants user agents wide latitude to experiment with third-party
cookie policies that balance the privacy and compatibility needs of their users.
However, this document does not endorse any particular third-party cookie
policy.</t>
        <t>Third-party cookie blocking policies are often ineffective at achieving their
privacy goals if servers attempt to work around their restrictions to track
users. In particular, two collaborating servers can often track users without
using cookies at all by injecting identifying information into dynamic URLs.</t>
      </section>
      <section anchor="cookie-policy" numbered="true" toc="default">
        <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" format="default"/>).</t>
        <t>A cookie policy may govern which domains or parties, as in first and third parties
(see <xref target="third-party-cookies" format="default"/>), for which the user agent will allow cookie access.
The policy can also define limits on cookie size, cookie expiry, and the number
of cookies per domain or in total.</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" format="default"/>).</t>
      </section>
      <section anchor="user-controls" numbered="true" toc="default">
        <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" format="default"/>).</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" format="default"/>.</t>
      </section>
      <section anchor="expiration-dates" numbered="true" toc="default">
        <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" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="overview-1" numbered="true" toc="default">
        <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" format="default"/>. 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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>All sensitive information conveyed in these header fields is exposed to an
eavesdropper.</li>
          <li>A malicious intermediary could alter the header fields as they travel in either
direction, with unpredictable results.</li>
          <li>A malicious client could alter the Cookie header fields before transmission,
with unpredictable results.</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" format="default"/>) 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>SameSite Cookies</name>
        <section anchor="defense-in-depth" numbered="true" toc="default">
          <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.</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" format="default"/> may also prove effective against CSRF, and are certainly worth
exploring in combination with "SameSite" cookies.</t>
        </section>
        <section anchor="top-level-navigations" numbered="true" toc="default">
          <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" numbered="true" toc="default">
          <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" numbered="true" toc="default">
          <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" format="default"/>. 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" numbered="true" toc="default">
          <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 browsing context'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>
        </section>
        <section anchor="unsafe-top-level-requests" numbered="true" toc="default">
          <name>Top-level requests with "unsafe" methods</name>
          <t>The "Lax" enforcement mode described in <xref target="strict-lax" format="default"/> 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" format="default"/>
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" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="iana-cookie" numbered="true" toc="default">
        <name>Cookie</name>
        <t>The permanent message header field registry (see <xref target="RFC3864" format="default"/>) 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" format="default"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-set-cookie" numbered="true" toc="default">
        <name>Set-Cookie</name>
        <t>The permanent message header field registry (see <xref target="RFC3864" format="default"/>) 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" format="default"/>)</t>
          </dd>
        </dl>
      </section>
      <section anchor="cookie-attribute-registry" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <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" format="default"/>). The attribute to be registered MUST match the <tt>extension-av</tt>
syntax defined in <xref target="abnf-syntax" format="default"/>. Note that attribute names are generally
defined in CamelCase, but technically accepted case-insensitively.</t>
        </section>
        <section anchor="registration" numbered="true" toc="default">
          <name>Registration</name>
          <t>The "Cookie Attribute Registry" should be created with the registrations below:</t>
          <table align="center">
            <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" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Expires</td>
                <td align="left">
                  <xref target="attribute-expires" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">HttpOnly</td>
                <td align="left">
                  <xref target="attribute-httponly" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Max-Age</td>
                <td align="left">
                  <xref target="attribute-max-age" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Path</td>
                <td align="left">
                  <xref target="attribute-path" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">SameSite</td>
                <td align="left">
                  <xref target="attribute-samesite" format="default"/> of this document</td>
              </tr>
              <tr>
                <td align="right">Secure</td>
                <td align="left">
                  <xref target="attribute-secure" format="default"/> of this document</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P.V. Mockapetris" initials="P.V." surname="Mockapetris">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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" format="default"/> 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">
              <organization/>
            </author>
            <author fullname="M. Duerst" initials="M." surname="Duerst">
              <organization/>
            </author>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <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">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian 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 RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC2818">
          <front>
            <title>HTTP Over TLS</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Mogul" initials="J." surname="Mogul">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="T. Gondrom" initials="T." surname="Gondrom">
              <organization/>
            </author>
            <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="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">
	 </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">
	 </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">
	 </author>
            <author fullname="Mark Goodwin">
	 </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>
      </references>
    </references>
    <section anchor="changes" numbered="true" toc="default">
      <name>Changes</name>
      <section anchor="draft-ietf-httpbis-rfc6265bis-00" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-00</name>
        <ul spacing="normal">
          <li>Port <xref target="RFC6265" format="default"/> to Markdown. No (intentional) normative changes.</li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-01" numbered="true" toc="default">
        <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>
                <eref target="https://github.com/httpwg/http-extensions/issues/243">https://github.com/httpwg/http-extensions/issues/243</eref></li>
              <li>
                <eref target="https://github.com/httpwg/http-extensions/issues/246">https://github.com/httpwg/http-extensions/issues/246</eref></li>
            </ul>
          </li>
          <li>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></li>
          <li>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></li>
          <li>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-alone" format="default"/>, removing
the ability for a non-secure origin to set cookies with a 'secure' flag, and
to overwrite cookies whose 'secure' flag is true.</li>
          <li>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-prefixes" format="default"/>, adding
<tt>__Secure-</tt> and <tt>__Host-</tt> cookie name prefix processing instructions.</li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-02" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-02</name>
        <ul spacing="normal">
          <li>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-same-site" format="default"/>, adding
support for the <tt>SameSite</tt> attribute.</li>
          <li>
            <t>Closed a number of editorial bugs:  </t>
            <ul spacing="normal">
              <li>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></li>
              <li>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></li>
              <li>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></li>
              <li>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></li>
              <li>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></li>
              <li>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></li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-03" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-03</name>
        <ul spacing="normal">
          <li>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></li>
          <li>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></li>
          <li>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></li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-04" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-04</name>
        <ul spacing="normal">
          <li>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></li>
          <li>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></li>
          <li>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></li>
          <li>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></li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-05" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-05</name>
        <ul spacing="normal">
          <li>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>.</li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-06" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-06</name>
        <ul spacing="normal">
          <li>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>.</li>
          <li>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>.</li>
          <li>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>.</li>
          <li>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>.</li>
          <li>Converted a normative reference to Mozilla's Public Suffix List <xref target="PSL" format="default"/> into
an informative reference:
<eref target="https://github.com/httpwg/http-extensions/issues/1159">https://github.com/httpwg/http-extensions/issues/1159</eref>.</li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-07" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-07</name>
        <ul spacing="normal">
          <li>Moved instruction to ignore cookies with empty cookie-name and cookie-value
from <xref target="set-cookie" format="default"/> to <xref target="storage-model" format="default"/> 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>.</li>
          <li>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>.</li>
          <li>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>.</li>
          <li>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>.</li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-08" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-08</name>
        <ul spacing="normal">
          <li>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></li>
          <li>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></li>
          <li>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></li>
          <li>Modify cookie parsing and creation algorithms in <xref target="set-cookie" format="default"/> and
<xref target="storage-model" format="default"/> to explicitly handle control characters:
<eref target="https://github.com/httpwg/http-extensions/pull/1420">https://github.com/httpwg/http-extensions/pull/1420</eref></li>
          <li>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></li>
          <li>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></li>
          <li>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></li>
        </ul>
      </section>
      <section anchor="draft-ietf-httpbis-rfc6265bis-09" numbered="true" toc="default">
        <name>draft-ietf-httpbis-rfc6265bis-09</name>
        <ul spacing="normal">
          <li>Update cookie size requirements:
<eref target="https://github.com/httpwg/http-extensions/pull/1563">https://github.com/httpwg/http-extensions/pull/1563</eref></li>
          <li>Reject cookies with control characters:
<eref target="https://github.com/httpwg/http-extensions/pull/1576">https://github.com/httpwg/http-extensions/pull/1576</eref></li>
          <li>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></li>
          <li>Specify empty domain attribute handling:
<eref target="https://github.com/httpwg/http-extensions/pull/1709">https://github.com/httpwg/http-extensions/pull/1709</eref></li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements" toc="default">
      <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>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
