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: ; 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, . [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, . 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, . [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - Communication Layers", STD 3, RFC 1122, DOI 10.17487/ RFC1122, October 1989, . 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]