<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.4.9) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-pre-denied-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title>The Preliminary Request Denied HTTP Status Code</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-pre-denied-00"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <postalLine>Melbourne</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 51?>

<t>This specification defines a HTTP status code to indicate that the server
is denying a prefetch or preload request.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://httpwg.org/http-extensions/draft-ietf-httpbis-pre-denied.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpbis-pre-denied/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/pre-denied"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="FETCH"/> introduces a mechanism whereby HTTP <xref target="HTTP"/> user agents can speculatively request a representation of a resource, in order to improve perceived performance.</t>
      <t>In some circumstances, a server might have information that leads it to believe that sending a full
response will not improve performance, and could have negative impacts.</t>
      <t>When this happens, it is common practice to use a 503 (Service Unavailable) status code. However, this has been shown to cause confusion: a server operator who sees a spike in that status code being sent tends to draw the conclusion that there is a server-side operational issue.</t>
      <t>While other status codes (e.g., 403 (Forbidden)) could be used, they can also suffer (to varying degrees) from the same problem: being confused with an error, operational problem, or other condition.</t>
      <t>This specification defines a new status code to specifically address this situation.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="the-code-preliminary-request-denied-status-code">
      <name>The 4xx (Preliminary Request Denied) Status Code</name>
      <t>The 4xx (Preliminary Request Denied) status code indicates that the server is refusing a preliminary request.</t>
      <t>A preliminary request is one that contains a Sec-Purpose header field <xref target="FETCH"/> containing the value "prefetch".</t>
      <t>This indication is only applicable to the associated request; future preliminary requests might or might not succeed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The following entry should be registered in the "HTTP Status Codes" registry:</t>
      <ul spacing="normal">
        <li>
          <t>Code: 4xx</t>
        </li>
        <li>
          <t>Description: Preliminary Request Denied</t>
        </li>
        <li>
          <t>Specification: RFC nnnn (this document)</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="HTTP"/> and <xref target="FETCH"/> apply. Conceivably, the use of this status code could leak information about the internal state of the server; caution should be exercised to assure that it does not.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="HTTP">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </reference>
      <reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
        <front>
          <title>Fetch</title>
          <author>
            <organization>WHAT Working Group</organization>
          </author>
          <date year="2026"/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 114?>



  </back>
  <!-- ##markdown-source:
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
gjUliOMNAAA=

-->

</rfc>
