Re: WGLC issue: P4 - ETags & conditional requests

"Roy T. Fielding" <> Mon, 23 April 2012 19:13 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 6E5D121F859F for <>; Mon, 23 Apr 2012 12:13:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.419
X-Spam-Status: No, score=-9.419 tagged_above=-999 required=5 tests=[AWL=1.180, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id pEnqr+VM3QuJ for <>; Mon, 23 Apr 2012 12:13:51 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id A7A3621F858D for <>; Mon, 23 Apr 2012 12:13:51 -0700 (PDT)
Received: from lists by with local (Exim 4.69) (envelope-from <>) id 1SMOgk-0007Qc-DL for; Mon, 23 Apr 2012 19:12:42 +0000
Received: from ([]) by with esmtp (Exim 4.69) (envelope-from <>) id 1SMOgZ-0007Pl-Hs for; Mon, 23 Apr 2012 19:12:31 +0000
Received: from ([] by with esmtp (Exim 4.72) (envelope-from <>) id 1SMOgT-0007Rk-3B for; Mon, 23 Apr 2012 19:12:29 +0000
Received: from (localhost []) by (Postfix) with ESMTP id 6C19A3B8078; Mon, 23 Apr 2012 12:12:04 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; c=nofws;; h=subject:mime-version :content-type:from:in-reply-to:date:cc:content-transfer-encoding :message-id:references:to; q=dns;; b=fIZLxC8QVNw/rgja 8lOm4wzcX0WyamR8+WaZpsttVT/U8uU6vBf8vi5Y2pNaQIisCC+xgq7AQVMZiiMa zzX+NfIaQcji92G/FXxUjMUNe3su5l8BefSvjSM9Km9bzJ348FSWBuUl+zFvDyte j2wOjyXdrjWZTEhckNbOLFlcm4o=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed;; h=subject :mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to;; bh=MSPZUzBpiXoYqjTx3E+GxHBaT5k=; b=YK9XO0Bzk6EzEX2OzUKSx/sTf6Re hQUt8Y+k0cBohGortw1bLkSzsp30S3YJZx5YhSoJuLZki68VeJbS/1kfVlnA12yJ 28AAeWJOSmGWOE3BOhLx5/tGpjSGKyg2eqGh4Zznjhk2ZfvtcUTMkmCLCGzg++66 TEbp7wFZ0VR4H6g=
Received: from [] ( []) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: by (Postfix) with ESMTPSA id F2EB53B800C; Mon, 23 Apr 2012 12:12:03 -0700 (PDT)
Mime-Version: 1.0 (Apple Message framework v1257)
Content-Type: text/plain; charset=us-ascii
From: "Roy T. Fielding" <>
In-Reply-To: <>
Date: Mon, 23 Apr 2012 12:12:03 -0700
Cc: " Group" <>, John Sullivan <>
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <>
To: Ben Niven-Jenkins <>
X-Mailer: Apple Mail (2.1257)
Received-SPF: none client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-2.0
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001
X-W3C-Scan-Sig: 1SMOgT-0007Rk-3B 660a849b30f18ba2ff6005ce4819ec5d
Subject: Re: WGLC issue: P4 - ETags & conditional requests
Archived-At: <>
X-Mailing-List: <> archive/latest/13465
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>
Resent-Message-Id: <>
Resent-Date: Mon, 23 Apr 2012 19:12:42 +0000

On Apr 23, 2012, at 10:47 AM, Ben Niven-Jenkins wrote:

> Hi,
> Apologies that this mail misses the WG LC deadline, in Velocix we're reviewing all the HTTPBIS documents but we're a little behind, hence the late comments, sorry. (we're still reviewing so might have more comments as we work through the documents)
> On page 14 of P4 it states:
>   If none of the entity-tags match, or if "*" is given and no current
>   representation exists, the server MUST NOT perform the requested
>   method.  Instead, the server MUST respond with the 412 (Precondition
>   Failed) status code.
> This appears to apply to intermediates, but If-Match has a problem
> here that If-Unmodified-Since does not. If a proxy has a cached
> entity which has a newer Last-Modified timestamp it *knows* that
> the conditional has failed and can generate the required
> 412 Precondition Failed response itself. Otherwise it can satisfy
> the request from cache. Or relay if there is no current cached
> version.
> But because multiple responses with different ETags may exist then a cache receiving If-Match with one etag, when it has a different etag cached, can not know for sure that the request etag does not exist. If it were to respond with a 412 status it would effectively be preventing the use of that conditional.
> It would appear that the only two options available to an intermediate are to satisfy the request in the case of a known match, and relay upstream in all other cases (which would be in conflict with the spec as quoted above).
> Thanks
> Ben

Thanks for your comments (there is plenty of time left, so keep them coming).

Yes, that appears to be a bug in the spec.  Only an origin server can respond 412.