<?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.21 -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-httpapi-date-requests-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title abbrev="Date Requests">Using The Date Header Field In HTTP Requests</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-httpapi-date-requests-00"/>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2022" month="February" day="09"/>
    <area>Applications and Real-Time</area>
    <workgroup>Building Blocks for HTTP APIs</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>HTTP clients rarely make use of the <tt>Date</tt> header field when making requests.
This document describes considerations for using the <tt>Date</tt> header field in
requests.  A method is described for correcting erroneous in <tt>Date</tt> request
header fields that might arise from differences in client and server clocks. The
risks of applying that correction technique are discussed.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/http-request-date/draft-thomson-httpapi-date-requests.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-httpapi-date-requests/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Building Blocks for HTTP APIs Working Group mailing list (<eref target="mailto:httpapi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/httpapi/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/http-request-date"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Many HTTP requests are timeless.  That is, the contents of the request are not
bound to a specific point in time.  Thus, the use of the HTTP <tt>Date</tt> header field
in requests is rare; see <xref section="6.6.1" sectionFormat="of" target="HTTP" format="default"/>.</t>
      <t>However, in some contexts, it is important that a request only be valid over a
small period of time.  One such context is when requests are signed
<xref target="SIGN" format="default"/>, where including a time in a
request might prevent a signed request from being reused at another time.
Similarly, some uses of OHTTP <xref target="OHTTP" format="default"/> might depend on the
same sort of replay protection.  It is possible to make anti-replay protections
at servers more efficient if requests from either far in the past or into the
future can be rejected.</t>
      <t>This document describes some considerations for using the <tt>Date</tt> request header
field in <xref target="date-req" format="default"/>.  A new type of problem report
<xref target="PROBLEM" format="default"/> is defined in <xref target="problem-type" format="default"/> for use
in rejecting requests with a missing or incorrect <tt>Date</tt> request header field.</t>
      <t><xref target="skew" format="default"/> explores the consequences of using <tt>Date</tt> header field in requests when
client and server clocks do not agree.  A method for recovering from differences
in clocks is described in <xref target="correction" format="default"/>.  <xref target="scope" format="default"/> describes the privacy
considerations that apply to this technique.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="date-req" numbered="true" toc="default">
      <name>Date in HTTP Requests</name>
      <t>Most HTTP clients have no need to use the <tt>Date</tt> header field in requests.  This
only changes if it is important that the request not be considered valid at
another time.  As requests are - by default - trivially copied, stored, and
modified by any entity that can read them, the addition of a <tt>Date</tt> header field
is unlikely to be useful in many cases.</t>
      <t>Signed HTTP requests are one example of where requests might be available to
entities that are not permitted to alter their contents.  Adding a <tt>Date</tt>
request header field - and signing it - ensures that the request cannot be used
at a very different time to what was intended.</t>
      <t>OHTTP <xref target="OHTTP" format="default"/> is another example of where capture and replay of a request
might be undesirable.  Here, a partially trusted intermediary, an oblivious
proxy resource, receives encapsulated HTTP requests.  Though this entity cannot
read or modify these messages, it is able to delay or replay them.  The
inclusion of a <tt>Date</tt> header field in these requests might be used to limit the
time over which delay or replay is possible.</t>
      <t>In both cases, the inclusion of a <tt>Date</tt> request header field might be part of
an anti-replay strategy at a server.  A simple anti-replay scheme starts by
choosing a window of time anchored at the current time.  Requests with
timestamps that fall within this period are remembered and rejected if they
appear again; requests with timestamps outside of this window are rejected.
This scheme works for any monotonic value (see for example <xref section="3.4.3" sectionFormat="of" target="RFC4303" format="default"/>) and allows for efficient rejection of duplicate requests with
minimal state.</t>
    </section>
    <section anchor="problem-type" numbered="true" toc="default">
      <name>Date Not Acceptable Problem Type</name>
      <t>A server can send a 400-series status code in response to a request where the
<tt>Date</tt> request header field is either absent or indicates a time that is not
acceptable to the server.  Including content of type "application/problem+json"
(or "application/problem+xml"), as defined in <xref target="PROBLEM" format="default"/>, in that response
allows the server to provide more information about the error.</t>
      <t>This document defines a problem type of
"https://iana.org/assignments/http-problem-types#date" for indicating that the
<tt>Date</tt> request header field is missing or incorrect.  <xref target="ex1" format="default"/> shows an example
response in HTTP/1.1 format.</t>
      <figure anchor="ex1">
        <name>Example Response</name>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Date: Mon, 07 Feb 2022 00:28:05 GMT
Content-Type: application/problem+json
Content-Length: 128

{"type":"https://iana.org/assignments/http-problem-types#date",
"title": "date field in request outside of acceptable range"}
]]></sourcecode>
      </figure>
      <t>A server <bcp14>MUST</bcp14> include a <tt>Date</tt> response header field in any responses that use
this problem detail type.</t>
      <t>In processing a <tt>Date</tt> header field in a request, a server <bcp14>MUST</bcp14> allow for delays
in transmitting the request, retransmissions performed by transport protocols,
plus any processing that might occur in the client and any intermediaries, and
those parts of the server prior to processing the field.  Additionally, the
<tt>Date</tt> header field is only capable of expressing time with a resolution of one
second.  These factors could mean that the value a server receives could be some
time in the past.</t>
      <t>Differences between client and server clocks are likely to be a source of most
disagreements between the server time and the time expressed in <tt>Date</tt> request
header field.  <xref target="skew" format="default"/> will explore this problem in more detail and offer some
means of handling these disagreements.</t>
    </section>
    <section anchor="skew" numbered="true" toc="default">
      <name>Clock Skew</name>
      <t>Perfect synchronization of client and server clocks is an ideal state that
generally only exists in tightly controlled settings.  In practice, despite good
availability of time services like NTP <xref target="NTP" format="default"/> Internet-connected
endpoints often disagree about the time (see for example Section 7.1 of
<xref target="CLOCKSKEW" format="default"/>).</t>
      <t>The prevalence of clock skew could justify servers being more tolerant of a
larger range of values for the <tt>Date</tt> request header field.  This includes
accepting times that are a short duration into the future in addition to times
in the past.</t>
      <t>For a server that uses the <tt>Date</tt> request header field to limit the state kept
for anti-replay purposes, the amount of state might be all that determines the
range of values it accepts.</t>
      <section anchor="correction" numbered="true" toc="default">
        <name>Date Correction</name>
        <t>Even when a server is tolerant of small clock errors, a valid request from a
client can be rejected if the client clock is outside of the range of times that
a server will accept.  A server might also reject a request when the client
makes a request without a <tt>Date</tt> header field.</t>
        <t>A client can recover from a failure that caused by a bad clock by adjusting the
time and re-attempting the request.</t>
        <t>For a fresh response (see <xref section="4.2" sectionFormat="of" target="CACHING" format="default"/>),
the client can re-attempt the request, copying the <tt>Date</tt> header field from the
response into its new request.  If the response is stale, the client can add the
age of the response to determine the time to use in a re-attempt; see
<xref target="intermediaries" format="default"/> for more.</t>
        <t>In addition to adjusting for response age, the client can adjust the time it
uses based on the elapsed time since it estimates when the response was
generated.  Note however that if the client retries a request immediately, any
additional increment is likely to be less than the one second resolution of the
<tt>Date</tt> header field under most network conditions.</t>
      </section>
      <section anchor="scope" numbered="true" toc="default">
        <name>Limitations of Date Correction</name>
        <t>Clients <bcp14>MUST NOT</bcp14> accept the time provided by an arbitrary HTTP server as the
basis for system-wide time.  Even if the client code in question were able to
set the time, altering the system clock in this way exposes clients to attack.
The source of system time information needs to be trustworthy as the current
time is a critical input to security-relevant decisions, such as whether to
accept a server certificate <xref target="RFC6125" format="default"/>.</t>
        <t>Use of date correction allows requests that use the correction to be correlated.
Limitations on use of date corrections is necessary to ensure privacy.  An
immediate retry of an identical request with an update <tt>Date</tt> header field is
safe in that it only provides the server with the ability to match the retry to
the original request.</t>
        <t>Anything other than an immediate retry requires careful consideration of the
privacy implications.  Use of the same date correction for other requests can be
used to link those requests to the same client.  Using the same date correction
is equivalent to connection reuse, cookies, TLS session tickets, or other state
a client might carry between requests.  Linking requests might be acceptable,
but in general only where other forms of linkage already exist.</t>
        <t>Clients <bcp14>MUST NOT</bcp14> use the time correction from one server when making requests of
another server.  Using the same date correction across different servers might
be used by servers to link client identities and to exchange information via a
channel provided by the client.</t>
        <t>For clients that maintain per-server state, the specific date correction that is
used for each server <bcp14>MUST</bcp14> be cleared when removing other state for that server
to prevent re-identification.  For instance, a web browser that remembers a date
correction would forget that correction when removing cookies and other state.</t>
      </section>
      <section anchor="intermediaries" numbered="true" toc="default">
        <name>Intermediaries and Date Corrections</name>
        <t>Some intermediaries, in particular those acting as reverse proxies or gateways,
will rewrite the <tt>Date</tt> header field in responses. This applies especially to
responses served from cache, but this might also apply to those that are
forwarded directly from an origin server.</t>
        <t>For responses that are forwarded by an intermediary, changes to the <tt>Date</tt>
response header field will not change how the client corrects its clock. Errors
only occur if the clock at the intermediary differs significantly from the clock
at the origin server or if the intermediary updates the <tt>Date</tt> response header
field without also adjusting or removing the <tt>Age</tt> header field on a stale
response.</t>
        <t>Servers that condition their responses on the <tt>Date</tt> header field <bcp14>SHOULD</bcp14> either
ensure that intermediaries do not cache responses (by including a
<tt>Cache-Control</tt> directive of <tt>no-store</tt>) or designate the response as
conditional on the value of the <tt>Date</tt> request header field (by including the
token "date" in a <tt>Vary</tt> header field).</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Including a <tt>Date</tt> header field in requests reveals information about the client
clock.  This might be used to identify clients with vulnerability to attacks
that depend on incorrect clocks.</t>
      <t><xref target="scope" format="default"/> contains a discussion of the security and privacy concerns associated
with date correction.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA are requested to create a new entry in the "HTTP Problem Type" registry
established by <xref target="PROBLEM" format="default"/>.</t>
      <dl>
        <dt>
Type URI:  </dt>
        <dd>
          <t>https://iana.org/assignments/http-problem-types#date</t>
        </dd>
        <dt>
Title:  </dt>
        <dd>
          <t>Date Not Acceptable</t>
        </dd>
        <dt>
Recommended HTTP Status Code:  </dt>
        <dd>
          <t>400</t>
        </dd>
        <dt>
Reference:  </dt>
        <dd>
          <t><xref target="problem-type" format="default"/> of this document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="PROBLEM">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="Mark Nottingham">
	 </author>
            <author fullname="Erik Wilde">
	 </author>
            <author fullname="Sanjay Dalal">
	 </author>
            <date day="13" month="October" year="2021"/>
            <abstract>
              <t>   This document defines a "problem detail" as a way to carry machine-
   readable details of errors in a HTTP response to avoid the need to
   define new error response formats for HTTP APIs.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/ietf-wg-httpapi/rfc7807bis.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-rfc7807bis-01"/>
        </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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="CACHING">
          <front>
            <title>HTTP Caching</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 defines HTTP caches and the associated header
   fields that control cache behavior or indicate cacheable response
   messages.

   This document obsoletes RFC 7234.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cache-19"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="HTTP">
          <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>
        <reference anchor="SIGN">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="Annabelle Backman">
              <organization>Amazon</organization>
            </author>
            <author fullname="Justin Richer">
              <organization>Bespoke Engineering</organization>
            </author>
            <author fullname="Manu Sporny">
              <organization>Digital Bazaar</organization>
            </author>
            <date day="28" month="January" year="2022"/>
            <abstract>
              <t>   This document describes a mechanism for creating, encoding, and
   verifying digital signatures or message authentication codes over
   components of an HTTP message.  This mechanism supports use cases
   where the full HTTP message may not be known to the signer, and where
   the message may be transformed (e.g., by intermediaries) before
   reaching the verifier.  This document also describes a means for
   requesting that a signature be applied to a subsequent HTTP message
   in an ongoing HTTP exchange.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-message-signatures-08"/>
        </reference>
        <reference anchor="OHTTP">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="25" month="November" year="2021"/>
            <abstract>
              <t>   This document describes a system for the forwarding of encrypted HTTP
   messages.  This allows a client to make multiple requests of a server
   without the server being able to link those requests to the client or
   to identify the requests as having come from the same client.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/unicorn-wg/oblivious-http.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ohai-ohttp-00"/>
        </reference>
        <reference anchor="RFC4303">
          <front>
            <title>IP Encapsulating Security Payload (ESP)</title>
            <author fullname="S. Kent" initials="S." surname="Kent">
              <organization/>
            </author>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6.  ESP is used to provide confidentiality, data origin authentication, connectionless integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality.  This document obsoletes RFC 2406 (November 1998).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4303"/>
          <seriesInfo name="DOI" value="10.17487/RFC4303"/>
        </reference>
        <reference anchor="NTP">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author fullname="D. Mills" initials="D." surname="Mills">
              <organization/>
            </author>
            <author fullname="J. Martin" initials="J." role="editor" surname="Martin">
              <organization/>
            </author>
            <author fullname="J. Burbank" initials="J." surname="Burbank">
              <organization/>
            </author>
            <author fullname="W. Kasch" initials="W." surname="Kasch">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet.  This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family.  NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs.  It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required.  It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
        <reference anchor="CLOCKSKEW">
          <front>
            <title>Where the Wild Warnings Are: Root Causes of Chrome HTTPS Certificate Errors</title>
            <author fullname="Mustafa Emre Acer" initials="M." surname="Acer">
              <organization/>
            </author>
            <author fullname="Emily Stark" initials="E." surname="Stark">
              <organization/>
            </author>
            <author fullname="Adrienne Porter Felt" initials="A." surname="Felt">
              <organization/>
            </author>
            <author fullname="Sascha Fahl" initials="S." surname="Fahl">
              <organization/>
            </author>
            <author fullname="Radhika Bhargava" initials="R." surname="Bhargava">
              <organization/>
            </author>
            <author fullname="Bhanu Dev" initials="B." surname="Dev">
              <organization/>
            </author>
            <author fullname="Matt Braithwaite" initials="M." surname="Braithwaite">
              <organization/>
            </author>
            <author fullname="Ryan Sleevi" initials="R." surname="Sleevi">
              <organization/>
            </author>
            <author fullname="Parisa Tabriz" initials="P." surname="Tabriz">
              <organization/>
            </author>
            <date month="October" year="2017"/>
          </front>
          <seriesInfo name="Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
          <seriesInfo name="DOI" value="10.1145/3133956.3134007"/>
        </reference>
        <reference anchor="RFC6125">
          <front>
            <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Hodges" initials="J." surname="Hodges">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6125"/>
          <seriesInfo name="DOI" value="10.17487/RFC6125"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>This document is a result of discussions about how to provide anti-replay
protection for OHTTP in which Mark Nottingham, Eric Rescorla, and Chris Wood
were instrumental.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
