<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.14 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?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 docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-polli-retry-scope-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.40.1 -->
  <front>
    <title>Retry-Scope header field</title>
    <seriesInfo name="Internet-Draft" value="draft-polli-retry-scope-00"/>
    <author initials="R." surname="Polli" fullname="Roberto Polli">
      <organization>Team Digitale, Italian Government</organization>
      <address>
        <email>robipolli@gmail.com</email>
      </address>
    </author>
    <date year="2020" month="March" day="09"/>
    <area>General</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines
the Retry-Scope header field for HTTP
thus allowing a server to communicate the scope
of the returned Retry-After header field.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t><em>RFC EDITOR: please remove this section before publication</em></t>
      <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>The source code and issues list for this draft can be found at
<eref target="https://github.com/ioggstream/draft-polli-Retry-Scope">https://github.com/ioggstream/draft-polli-Retry-Scope</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The Retry-After header defined in Section 7.1.3 of <xref target="SEMANTICS" format="default"/> allows a server
to indicate how long the user agent ought to wait before making a follow-up request.</t>
      <t>While Retry-After applies to the issued request, it may be useful for the server
to communicate to the user agent that the conditions that lead to returning Retry-After
are broader in scope than a single request.</t>
      <t>This proposal allows a server to convey that scope
in the Retry-Scope response header field,
and ask the client to temporarily refrain
from making other requests to the same resource,
or even to all resources on the same server.</t>
      <section anchor="notational-conventions" numbered="true" toc="default">
        <name>Notational Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.</t>
        <t>This document uses the Augmented BNF defined in <xref target="RFC5234" format="default"/> and updated
by <xref target="RFC7405" format="default"/> along with the "#rule" extension defined in Section 7 of
<xref target="MESSAGING" format="default"/>
and the URI-reference rule defined in Section 2.7 of <xref target="MESSAGING" format="default"/>.</t>
        <t>The terms "intermediaries" and "target URI" are to be interpreted as described in <xref target="MESSAGING" format="default"/>.</t>
      </section>
    </section>
    <section anchor="header-specifications" numbered="true" toc="default">
      <name>Header Specifications</name>
      <t>The following header is defined</t>
      <section anchor="retry-scope-header" numbered="true" toc="default">
        <name>Retry-Scope</name>
        <t>The Retry-Scope response header field indicates that
the conditions that lead to returning Retry-After
are broader in scope than a single request.</t>
        <artwork type="abnf" name="" align="left" alt=""><![CDATA[
   Retry-Scope = URI-reference
]]></artwork>
        <t>Two examples of Retry-Scope:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   Retry-Scope: /books
   Retry-Scope: https://api.example/
]]></artwork>
        <t>A user agent receiving the Retry-Scope header field
in conjunction with a Retry-After header field
ought to wait before making further request
to the resource identified by the Retry-Scope field value.</t>
        <t>This header MUST NOT be repeated;
if a user agent receives multiple Retry-Scope header fields,
then it SHOULD ignore them.</t>
        <t>Intermediaries aware of the Retry-Scope semantics
(eg. reverse proxies)
MAY modify the Retry-Scope
in order to help the user agent to correctly identify the scope
and ensure that the field value matches the target URI,
like they would have done
for the Location header field defined in Section 7.1.2 of <xref target="SEMANTICS" format="default"/>.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="role-of-intermediaries" numbered="true" toc="default">
        <name>Role of intermediaries</name>
        <t>An intermediary, by chance or purpose,
might alter the scope of the Retry-Scope
thus causing the user agent
to refrain contacting other server resource.</t>
        <t>When the server originating
the Retry-Scope is behind one or more intermediaries
it is possible that the field value is not consistent
with the target URI.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="retry-scope-header-field-registration" numbered="true" toc="default">
        <name>Retry-Scope Header Field Registration</name>
        <t>This section registers the <tt>Retry-Scope</tt> header field in the "Permanent Message
Header Field Names" registry (<xref target="RFC3864" format="default"/>).</t>
        <t>Header field name:  <tt>Retry-Scope</tt></t>
        <t>Applicable protocol:  http</t>
        <t>Status:  standard</t>
        <t>Author/Change controller:  IETF</t>
        <t>Specification document(s):  <xref target="retry-scope-header" format="default"/> of this document</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="SEMANTICS" target="https://www.rfc-editor.org/info/rfc7231">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
          <seriesInfo name="DOI" value="10.17487/RFC7231"/>
          <seriesInfo name="RFC" value="7231"/>
          <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
            <organization/>
          </author>
          <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
            <organization/>
          </author>
          <date year="2014" month="June"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="BCP" value="14"/>
          <author initials="S." surname="Bradner" fullname="S. Bradner">
            <organization/>
          </author>
          <date year="1997" month="March"/>
          <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>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="BCP" value="14"/>
          <author initials="B." surname="Leiba" fullname="B. Leiba">
            <organization/>
          </author>
          <date year="2017" month="May"/>
          <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>
      </reference>
      <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="STD" value="68"/>
          <author initials="D." surname="Crocker" fullname="D. Crocker" role="editor">
            <organization/>
          </author>
          <author initials="P." surname="Overell" fullname="P. Overell">
            <organization/>
          </author>
          <date year="2008" month="January"/>
          <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>
      </reference>
      <reference anchor="RFC7405" target="https://www.rfc-editor.org/info/rfc7405">
        <front>
          <title>Case-Sensitive String Support in ABNF</title>
          <seriesInfo name="DOI" value="10.17487/RFC7405"/>
          <seriesInfo name="RFC" value="7405"/>
          <author initials="P." surname="Kyzivat" fullname="P. Kyzivat">
            <organization/>
          </author>
          <date year="2014" month="December"/>
          <abstract>
            <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="MESSAGING" target="https://www.rfc-editor.org/info/rfc7230">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
          <seriesInfo name="DOI" value="10.17487/RFC7230"/>
          <seriesInfo name="RFC" value="7230"/>
          <author initials="R." surname="Fielding" fullname="R. Fielding" role="editor">
            <organization/>
          </author>
          <author initials="J." surname="Reschke" fullname="J. Reschke" role="editor">
            <organization/>
          </author>
          <date year="2014" month="June"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC3864" target="https://www.rfc-editor.org/info/rfc3864">
        <front>
          <title>Registration Procedures for Message Header Fields</title>
          <seriesInfo name="DOI" value="10.17487/RFC3864"/>
          <seriesInfo name="RFC" value="3864"/>
          <seriesInfo name="BCP" value="90"/>
          <author initials="G." surname="Klyne" fullname="G. Klyne">
            <organization/>
          </author>
          <author initials="M." surname="Nottingham" fullname="M. Nottingham">
            <organization/>
          </author>
          <author initials="J." surname="Mogul" fullname="J. Mogul">
            <organization/>
          </author>
          <date year="2004" month="September"/>
          <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>
      </reference>
    </references>
    <section anchor="acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>This specification was born from a thread created by Martin Thomson,
and the subsequent discussion.</t>
    </section>
    <section numbered="false" anchor="faq" toc="default">
      <name>FAQ</name>
      <dl newline="false" spacing="normal">
        <dt>Q: Why not using link relations?</dt>
        <dd>
  This solution is simpler and was previously discussed
<eref target="https://github.com/httpwg/http-core/pull/317#issuecomment-585868767">here</eref>.</dd>
      </dl>
    </section>
    <section numbered="false" anchor="change-log" toc="default">
      <name>Change Log</name>
      <t>RFC EDITOR PLEASE DELETE THIS SECTION.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
