Feedback on INHIBIT and RESTORE, please?

Eric J Bowman <mellowmutt@zoho.com> Tue, 05 March 2024 07:10 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=ietf.org@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 769DAC14F61C for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Mar 2024 23:10:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.846
X-Spam-Level:
X-Spam-Status: No, score=-7.846 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_MIME_MALF=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=w3.org header.b="qZPrcxWf"; dkim=pass (2048-bit key) header.d=w3.org header.b="MgPbjjol"; dkim=pass (1024-bit key) header.d=zoho.com header.b="FUc9Xvee"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yi1HgFzlPN5f for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Mar 2024 23:10:24 -0800 (PST)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 52C7AC14F61A for <httpbisa-archive-bis2Juki@ietf.org>; Mon, 4 Mar 2024 23:10:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:Content-Type:MIME-Version:In-Reply-To:Message-Id:To:From:Date :Cc:Reply-To:References; bh=h8CfLpfyWpWLsTJn7fNuTBags4qNG2gtTJL48/SlLnU=; b=q ZPrcxWfJLr8uYqfO3RVKNUBXjbG1mOlTx7S69alVJmxN7C+RfZtNgJN5ObpSq8CAlVSxxZ+i7hiD+ LkGy4Dxzd3EzCQJr2uSdPM6iaeDTGJUe63qPRhpQtwmmBvR1NmZe0pyFmaHW1GNtwS19rQy8u2bav eWZFv5PAlNkBO8saNSp7IhJ1kXL0QDv+37Uvizujc8QHOPHvLaZ8+lZdbLNDC+wmKk32vD4jrrFNy DgxniYEL3UCdlOJA2bjhfbDrYGTcnsrZY+/SOGazgHNq6KMh+OgxrCrDsxTxYRvkIFFNGoXWAAACF g9FLGhnmi2I0Imigt1XST27NnlDiPaaEg==;
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1rhOwD-0021Vd-SP for ietf-http-wg-dist@listhub.w3.org; Tue, 05 Mar 2024 07:10:09 +0000
Resent-Date: Tue, 05 Mar 2024 07:10:09 +0000
Resent-Message-Id: <E1rhOwD-0021Vd-SP@lyra.w3.org>
Received: from pan.w3.org ([3.222.182.102]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <mellowmutt@zoho.com>) id 1rhOwA-0021Uc-LM for ietf-http-wg@listhub.w3.org; Tue, 05 Mar 2024 07:10:07 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Content-Type:MIME-Version:Subject:In-Reply-To:Message-Id:To:From:Date :Cc:Reply-To:References; bh=h8CfLpfyWpWLsTJn7fNuTBags4qNG2gtTJL48/SlLnU=; t=1709622606; x=1710486606; b=MgPbjjol5T0Xh+TBA8DVAwrsiL9CWuZmXqHFxGss1jrk9BG 3XXdk7lPfqgNfTF/7V1lbfs6xI///UsFyFyZ7MFGxKI16HPS3HyxgrxsVfoa5CdxZLdmFoaILTvkb rNmAmgJ5sz1uWml0QUh6UpLrLVrWe4dN9uwlL9+rsQBzme15yRXspJoUGSxIthjtFxIFezFpDaxRe +qEnWyL5fhxNlo4lvqN+Bce4jKYokBqIcPQJBzubo1ifZWsUUtNcf6L9CIcvrLou26zMzgZO6TkQi boYPQgUma73UTA+i/2mSWgl/phscdb236r9OlYXCSIDL+V+YjJYHIKv716fgvH/w==;
Received-SPF: pass (pan.w3.org: domain of zoho.com designates 136.143.188.91 as permitted sender) client-ip=136.143.188.91; envelope-from=mellowmutt@zoho.com; helo=sender4-pp-o91.zoho.com;
Received: from sender4-pp-o91.zoho.com ([136.143.188.91]) by pan.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <mellowmutt@zoho.com>) id 1rhOw9-007X6N-2k for ietf-http-wg@w3.org; Tue, 05 Mar 2024 07:10:06 +0000
ARC-Seal: i=1; a=rsa-sha256; t=1709622601; cv=none; d=zohomail.com; s=zohoarc; b=D3seAxYYLYPHcnL3DCToxWJNen5at4VSvd6XgAtTLAI0t2vgzNwPHwKPCx172fpL7wk2rL2wZgUxbq5f3T1jk+5+fizdwT6ADXMNjt/mCrszPVdVhthIaSsRsDmJPw7TMYdxWAvy/PtPtfD7SJ2KNF+F8rG+9W58Tyaq2fF/AS8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709622601; h=Content-Type:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=h8CfLpfyWpWLsTJn7fNuTBags4qNG2gtTJL48/SlLnU=; b=iS0K0ZBtYrUZiQQkEtQMeoaFEQuqx+p39OVWlNcB10b0stKXHnTjkoWkgrL8N9t9Yct6R0oap0w04h7SM+sSXBtyDqL74+6OXUTvoSzgTOjJVjYUob8hQ7kFvo31Nwz7RQ7R5GY9Fz5RQE7Vkna4xBRY1blDzCAWwQpoOhx07Dw=
ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=mellowmutt@zoho.com; dmarc=pass header.from=<mellowmutt@zoho.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1709622601; s=zm2022; d=zoho.com; i=mellowmutt@zoho.com; h=Date:Date:From:From:To:To:Message-Id:Message-Id:In-Reply-To:Subject:Subject:MIME-Version:Content-Type:Feedback-ID:Reply-To:Cc; bh=h8CfLpfyWpWLsTJn7fNuTBags4qNG2gtTJL48/SlLnU=; b=FUc9Xvee9xfkHss7biC7hIgOQfzBMz5QpO0Gv+2ArGfJ8B+F9C375so0Z6Ky7Gou nc4Q5gy+I34GSknkM9XGCC3R0f8cTB8uDo8LV2SDiAXWeFK44L5vOiJvkpHvU6jNJmY jMZ5nTzgUHLMwhGQ9oAl/xciq4jC7WSDb3iTh+Qs=
Received: from mail.zoho.com by mx.zohomail.com with SMTP id 1709622600058343.4216467440017; Mon, 4 Mar 2024 23:10:00 -0800 (PST)
Received: from [65.117.211.248] by mail.zoho.com with HTTP;Mon, 4 Mar 2024 23:10:00 -0800 (PST)
Date: Mon, 04 Mar 2024 23:10:00 -0800
From: Eric J Bowman <mellowmutt@zoho.com>
To: Ietf Http Wg <ietf-http-wg@w3.org>
Message-Id: <18e0d72a16c.12ba6e4e539841.2176589173863326330@zoho.com>
In-Reply-To:
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_Part_100745_1442346053.1709622600045"
Importance: Medium
User-Agent: Zoho Mail
X-Mailer: Zoho Mail
Feedback-ID: rr080112283e907034365c0055fe22e4fb0000b328c9c8400c1dffe7628cef67ac695f935dd4746015fe0c3f21:zu080112278af33724f5394ec4229052e80000ac0984bf5f62380110743fda46b965ad7a31f7ca90eebb5861:rf08011226eeca2ec635106d70a9dfae520000f85110fe5e36821c23854fdd7d731ca964753911b774a7b2:ZohoMail
X-W3C-Hub-DKIM-Status: validation passed: (address=mellowmutt@zoho.com domain=zoho.com), signature is good
X-W3C-Hub-DKIM-Status: validation passed: (address=mellowmutt@zoho.com domain=mellowmutt@zoho.com), signature is good
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: ARC_SIGNED=0.001, ARC_VALID=0.001, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, DMARC_PASS=-0.001, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_MIME_MALF=0.01, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: pan.w3.org 1rhOw9-007X6N-2k 968a65710bd855182e89a47b3b7d8fbd
X-Original-To: ietf-http-wg@w3.org
Subject: Feedback on INHIBIT and RESTORE, please?
Archived-At: <https://www.w3.org/mid/18e0d72a16c.12ba6e4e539841.2176589173863326330@zoho.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/51859
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

INHIBIT and RESTORE Methods for HTTP 



Abstract



Temporarily changing the availability status of a resource, is a common procedure in webserver administration. It is typically accomplished by editing a configuration file, or overloading the POST method by using it to affect changes which fall outside the scope of altering the content of, or creating, a resource. HTTP additionally attaches creation and destruction semantics to PUT and DELETE. This proposal suggests two new HTTP methods, INHIBIT and RESTORE, as a mechanism for clarifying server behavior for intermediaries, and in log files.



Introduction



This proposal defines two extension methods for HTTP server administration, to change the status of a resource to "temporarily unavailable" (INHIBIT); and revert the change in availability status at a later time (RESTORE). Its use is not limited to toggling the 503 response status.



Extension methods are desirable for the temporary off-lining of a resource in a cache-transparent fashion. Replacing a cacheable 200 OK response with a non-cacheable 503 response by editing a configuration file or using a POST request (webhosting control-panel apps) does not address the use-case of immediately suspending access to content involved in a legal dispute, e.g. copyright; or if the temporary status will be 402 Payment Required, etc.



The INHIBIT method indicates that any caches it passes through, MUST mark all variant representations stale; as does the RESTORE method, in cases where the temporary status response is cacheable and the request did not include a Defer-Request header, defined below, which a cache MAY utilize to inform its behavior.



The INHIBIT Method



The availability status of a resource may need to be changed from its regular behavior, for a limited period of time (which may be indefinite). The inhibited behavior could be a paywall for a journal or newspaper article, to make it free content in a collection which defaults to paid content, or vice-versa. An INHIBIT request MAY contain a message body containing the desired end-result status code, and/or the desired response message.



Any media type suitable to expressing a name-value pair may be used for the requested status, as will any media type suitable for expressing the requested message. To send both, a user-agent MUST use the Multipart/Related media type as follows:



Content-Type: Multipart/Related; boundary=message

--message

Content-Type: text/xml; charset=utf-8



<status>503</status>

--message

Content-Type: text/html; charset=utf-8



<p>Down for maintenance, try back later.</p>

--message--



The status code is always the first part, if sent. Subsequent parts may be added, e.g. one for each supported Content-Language. If accepted, the response to an INHIBIT request SHOULD reflect the desired status code and message content, but MAY choose to respond 204 Accepted, particularly in the case of multiple message parts.



The RESTORE Method



The RESTORE method may be invoked at any time to revert an inhibited resource to its prior availability status. If accepted, the origin server SHOULD respond with the normal-operations response status for the resource, e.g. 200 OK, but MAY issue a 204 Accepted response. A user-agent MAY add a defer-request header with a timestamp to inform the origin server when to execute the RESTORE request. A server MAY include this information in the response body of the temporary response status. A cache MAY utilize this information in determining whether or not to expire stale representations.



The Defer-Request Request Header



This header has potential applications which are beyond the scope of this proposal, for example having a server accept a PUT request but delay its application to the identified resource. It is up to the user-agent to convert intentions such as "wait three units of time" into an absolute timestamp.



"Defer-Request" ":" date-time



A cache MUST NOT take any action when processing any request containing a Defer-Request header. This suggests only using it in conjunction with methods where that's the default cache behavior anyway.



IANA Considerations



The Defer-Request header is identical to the Deferred-Delivery header defined in RFC 2156, with a different name to reflect a more general purpose than message delivery. Considering it general-purpose may be deemed to break stuff, but not in the context of the proposed RESTORE method. So maybe just re-use Deferred-Delivery?



I've been using these methods for so long I forgot where I cribbed 'em from. This is my first crack at writing an RFC, just documenting my custom and practice.



-Eric