<?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.30 (Ruby 3.4.8) -->
<?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-nottingham-httpbis-pre-denied-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>The Preliminary Request Denied HTTP Status Code</title>
    <seriesInfo name="Internet-Draft" value="draft-nottingham-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 46?>

<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>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nottingham-httpbis-pre-denied/"/>.
      </t>
      <t>
         information can be found at <eref target="https://mnot.github.io/I-D/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mnot/I-D/labels/pre-denied"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<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"/> with 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 109?>



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

-->

</rfc>
