Skip to main content

An HTTP Status Code to Indicate Request Noncomformity While Still Making Best-Effort Response
draft-sbarta-tolerating-00

Document Type Active Internet-Draft (individual)
Author Silas Barta
Last updated 2025-04-01
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-sbarta-tolerating-00
Internet-Draft                                                  S. Barta
Expires: July 1, 2025                                                   
Intended Status: Proposed Standard                            April 2025

   An HTTP Status Code to Indicate Request Noncomformity While Still
                      Making Best-Effort Response
                       draft-sbarta-tolerating-00

Abstract

   This document specifies a Hypertext Transfer Protocol (HTTP) status
   code for use when resource was accessed in a nonconforming manner
   but the request will be tolerated with reservation, while directing
   the client adhere to relevant protocols.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.  The list of current Internet-Drafts is at
   https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   https://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   https://www.ietf.org/shadow.html

Copyright Notice

   Copyright (c) 2025 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Barta                        Expires July 1, 2025               [Page 1]
Internet-Draft               sbarta-tolerating-00             April 2025

Table of Contents

   1.  Introduction .................................................2
   2.  Requirements .................................................2
   3.  397 Tolerating ...............................................2
   4.  IANA Considerations ..........................................3
   4.1.  Request-Nonconformity ......................................3
   4.2.  Request-Nonconformant-Part .................................4
   4.3.  Request-Interpreted-As .....................................4
   4.4.  Tolerated-Until ............................................4
   4.5.  Advisory ...................................................4
   6.  References ...................................................4
   6.1.  Normative References .......................................4
   6.2.  Informative References .....................................5
   7.  Security Considerations ......................................5
   8.  Acknowledgements .............................................5
   9.  Author's Address .............................................5

1.  Introduction

   This document specifies Hypertext Transfer Protocol (HTTP) status
   code "397 Tolerating" for use when a server operator has received a
   request that violates standards for making such a request, but which
   the server will respond to under best-faith interpretation of client
   intent.

   This status code can be used to alert clients of their standards
   breakage and the potential that future requests of this type might
   not be handled as desired by this or other internet servers in the
   future.

   [RFC793] Section 2.10 discusses the Robustness Principle under which
   one should be liberal in what one accepts; in keeping with that
   principle, servers should make a best effort to handle non-conforming
   requests; this status code additionally provides a way to communicate
   to the client that it is doing so, and how to avoid potential
   breakage in the future.

2.  Requirements

   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 [RFC2119].

3.  397 Tolerating

   This status code indicates that the server has found a standards
   violation in the client request, but will respond in good faith
   anyway to the most likely intended conforming request.

Barta                        Expires July 1, 2025               [Page 2]
Internet-Draft               sbarta-tolerating-00             April 2025

   Responses using this status code SHOULD include an explanation, in
   the header, of the details of the standards breakage; what the client
   sent, versus what the client should have sent. For example:

   HTTP/1.1 397 Tolerating
   Link: <https://www.example.org/news>;
   Content-Type: text/html
   Request-Nonconformity: This request used the HTTP header "Referrer",
     which is most likely intended to be the standard HTTP header
     "Referer"; request will be handled on this assumption, and the
     client is advised to update code to "Referer" for future requests.
   Request-Nonconformant-Part: Referrer: http://search.example.com
   Request-Interpreted-As: Referer: http://search.example.com
   Tolerated-Until: Fri, 30 Apr 2025 06:05:18 GMT

   The use of the 397 status code does not imply an obligation to
   tolerate the nonconformity in the future. Servers MAY specify the
   tolerance's ending time with the Tolerated-Until response header.

   Clients SHOULD monitor their server logs for computer-initiated API
   requests in order to detect 397 responses and appropriately update
   their software in order to conform with relevant RFCs.

   A 397 response MUST be followed by another HTTP response, similar to
   other 300-series HTTP status codes, where such response makes the
   best guess at what the client intended; in the example above, that
   would be the response the client would have received from "Referer".

4.  IANA Considerations

   The HTTP Status Codes Registry has been updated with the following
   entry:

   o  Code: 397

   o  Description: Tolerating

   o  Specification: RFC 8969

   The Standard Header Registry has been updated with the following
   entries:

4.1.  Request-Nonconformity

   o  Header Name: Request-Nonconformity

   o  Description: Human-readable explanation about what is wrong
      with the request.

   o  Reference: RFC 8969

Barta                        Expires July 1, 2025               [Page 3]
Internet-Draft               sbarta-tolerating-00             April 2025

4.2.  Request-Nonconformant-Part

   o  Header Name: Request-Nonconformant-Part

   o  Description: Repeats back the part of the request that is non-
      conforming.

   o  Reference: RFC 8969

4.3.  Request-Interpreted-As

   o  Header Name: Request-Interpreted-As

   o  Description: The corrected version of the non-conformant part
      that the server will interpret the request as.

   o  Reference: RFC 8969

4.4.  Tolerated-Until

   o  Header Name: Tolerated-Until

   o  Description: The date and time, formatted per [RFC9110], after
      which the server will stop thusly correcting this request error.

   o  Reference: RFC 8969

4.5.  Advisory

   o  Header Name: Advisory

   o  Description: Human-readable advice for the client regarding
      adaptation to relevant RFCs.

   o  Reference: RFC 8969

6.  References

6.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC9110]  Fielding, R., Ed., and J. Reschke, Ed., "Hypertext
              Transfer Protocol (HTTP/1.1): Semantics and Content",
              RFC 9110, DOI 10.17487/RFC79110, June 2014,
              <https://www.rfc-editor.org/info/rfc9110>.

Barta                        Expires July 1, 2025               [Page 4]
Internet-Draft               sbarta-tolerating-00             April 2025

6.2.  Informative References

   [RFC793]   Postel, J., "DoD standard Transmission Control Protocol",
              RFC 793, DOI 10.17487/RFC0761, January 1980,
              <https://www.rfc-editor.org/info/rfc793>.

   [RFC1122]  Braden, R., Ed., "Requirements for Internet Hosts -
              Communication Layers", STD 3, RFC 1122, DOI 10.17487/
              RFC1122, October 1989,
              <https://www.rfc-editor.org/info/rfc1122>.

7.  Security Considerations

   XXX Todo

8.  Acknowledgements

   Thanks to the field of numerology for providing 97 as the number
   for tolerance.

9.  Author's Address

   Silas Barta

   Email: sbarta@gmail.com

Barta                        Standards Track                    [Page 5]