Re: Comments on HTTP draft [of 23 Nov 1994]

Chuck Shotton writes:

>>> 5.5.2 If-Modified-Since: This section implies that servers *must*
>>>     implement this feature.  However, the last-modified-date might be
>>>     unavailable, unreliable, or not applicable for some URIs.  In these
>>>     cases (or indeed in any case), is the server permitted to return the
>>>     object, despite the presence of the I-M-S header?
>>Yes, but proper implementation (where appropriate) of the conditional
>>GET protocol will be strongly recommended and required for all new servers.
> Why required? There is no way to validate that this feature exists or is
> supported by a server by exercising a server remotely. I could write a
> server that modifies a document before every transmission or generates all
> documents on the fly. The effect would be the same as if the server
> completely ignored the if-modified-since header, since the document is
> always modified. From a client's perspective, you have no way to determine
> why the document is always returned.

If the document is modified before each response, or just has no last-modified
date (as is the case for scripts), then the correct behavior is to send
the document as if it were a normal GET.

If the document does have a valid last-modified header, then it most certainly
can be verified by exercising a server remotely -- I have done so many times.
The conditional GET protocol MUST be supported because its implementation
is required for efficient caching, and the need for caching far outweighs
the needs of an individual server implementation.

> I think this is one case where "required" is too strong a word (I also have
> qualms about HEAD being "required", but that one can be validated remotely.
> I only question HEAD's usefulness for most implementations.) Strongly
> recommended is fine.

HEAD exists because it allows programs that are only interested in
metainformation and link validity to make requests without retrieving
the object body.  Like IMS, its purpose is to reduce network load and
thus must be supported in order for HTTP servers to be "good net citizens".
Besides, it is trivial to implement once GET has been implemented.

......Roy Fielding   ICS Grad Student, University of California, Irvine  USA

Received on Thursday, 1 December 1994 17:24:20 UTC