- From: Robert Siemer <Robert.Siemer-httpwg@backsla.sh>
- Date: Mon, 14 Jan 2008 21:52:10 +0100
- Cc: ietf-http-wg@w3.org
Larry, thank you for your insight. I actually reread 2616 and noticed
that the weak etag concept limits itself to non-subrange GET(/HEAD)
requests in Section 13.3.3 ("Clients MAY issue simple ..."). It's a
little subliminal there, but supported by Section 3.11 ("A weak entity
tag can only be used for weak comparison.") together with Section 14.26
("The weak comparison function can only be used with GET or HEAD
requests.").
I suggest refrasing
Clients MAY issue simple (non-subrange) GET requests with either weak
validators or strong validators. Clients MUST NOT use weak validators
in other forms of request.
to
Clients MAY issue simple (non-subrange) GET requests with either weak
validators or strong validators. Clients MUST NOT use weak validators
with requests other than non-subrange GET or HEAD.
But RFC 2616 still has an issue with mixing two concepts under one name.
Being "weak validator":
-weak etags standing for semantic equivalence and
-weak Last-Modified times standing for possibly two completely different
objects
That brings a lot of confusion, especially when almost consolidating
weak Last-Modified times with semantic equivalence in Section 13.3.3:
An entity's modification time, if represented with one-second
resolution, could be a weak validator, since it is possible that
the resource might be modified twice during a single second.
I suggest writing insted
An entity's modification time, ..., could _not_ be a _strong_
validator, since ...
or adding
... But as the same modification time does not guarantee general
semantic equivalence, it is likely not even useful for a weak etag
at all.
I even suggest splitting up the term "weak validator" by:
-replacing it with "weak Last-Modified time" and "semantic etag"
(native speakers feel free to propose other synonyms for these two)
-stressing that the use of _weak_ Last-Modified times is for HTTP/1.0
compatibility only (isn't it more or less?) and maybe discourage it
because of their non-secure nature (could falsely equal two different
objects)
Note: see second part of 13.3.3 on how to deduce Last-Mod to be strong
-making sure everybody understands that there was no intention to
allow "unsure etags" in the sense of "weak Last-Modified time"
-correct some occurrence of "weak validator" in the spec where actually
meaning "semantic etag" only (and to not include weak Last-Modified
times)
This would finally rule out the erroneous use of one-second resolution
modification times for generating any weak etags (in case of mod time
being the same second as "now"), if the server doing so does not stand
up for semantic equivalence of modifications on the same second.
[The server should at most generate a (weak) Last-Modified header or
provide an ETag based on a secure content hash. I think the server would
be better off providing no validators at all when the modification time
can not be distinguished from "now". It could provide strong
Last-Modified headers and modification time based strong ETags following
these rules.]
Did I see it right now? (-:
Robert
Received on Monday, 14 January 2008 20:51:23 UTC