- From: Scott Lawrence <lawrence@agranat.com>
- Date: Fri, 11 Apr 1997 09:35:21 -0400
- To: http-wg@cuckoo.hpl.hp.com
YG> It seems a clarification is in order. As such I propose that the
YG> following paragraph be added to the end of section 10.1:
YG>
YG> 1xx responses MAY be sent independently of requests. Clients MUST always
YG> be able to accept 1xx responses and MUST ignore any 1xx response they do
YG> not understand. In addition, proxies MUST pass through any 1xx response
YG> they do not understand.
>>>>> "LM" == Larry Masinter <masinter@parc.xerox.com> writes:
LM> I'm really uneasy about this. I can imagine an implementation that
LM> just doesn't read from the connection at all unless there's some
LM> request outstanding, and a server that sends a 1xx 'response' [sic]
LM> without a pending request might wind up with stuff stuck in buffers
LM> that never gets read.
LM> Seems like it puts unnecessary requirements on implementations,
LM> and it doesn't seem justified. Just what ARE these unanticpated
LM> 'responses'?
The only apparent purpose we could find in the RFC for the 100
response was in a discussion of client retry behaviour when the
connection closed before the client had finished sending the body of
a POST:
Clients SHOULD remember the version number of at least the most
recently used server; if an HTTP/1.1 client has seen an HTTP/1.1 or
later response from the server, and it sees the connection close
before receiving any status from the server, the client SHOULD retry
the request without user interaction so long as the request method is
idempotent (see section 9.1.2); other methods MUST NOT be
automatically retried, although user agents MAY offer a human
operator the choice of retrying the request.. If the client does
retry the request, the client
o MUST first send the request header fields, and then
o MUST wait for the server to respond with either a 100 (Continue)
response, in which case the client should continue, or with an
error status.
If an HTTP/1.1 client has not seen an HTTP/1.1 or later response from
the server, it should assume that the server implements HTTP/1.0 or
older and will not use the 100 (Continue) response. If in this case
This wait between the headers and the body of a POST is the only
purpose we can see for a 100 response. The only time our
implementation sends one is after receiving an acceptable 1.1 POST.
This is usefull in that it allows for us to reject a POST on
authentication or other grounds, hopefully before the client starts
sending the body (which could be large, and which the server would
have to just throw away). Since most of the time a POST will have
been preceeded by a GET from the same server (to obtain the page
containing the form), there is a good chance that the client has had
an opportunity to know that it is dealing with a 1.1 server so it
can know to wait.
We would actually prefer to see this set of rules made more general
in that we'd like it to apply to any POST, not just one being
retried (which may or may not have been what was intended).
As to Yolands' suggestion above, I don't really see the point (we
certainly won't be sending all those extra responses), but since it
specifies only client behaviour we don't care much.
--
Scott Lawrence <lawrence@agranat.com>
Agranat Systems, Inc. http://www.agranat.com/
Received on Friday, 11 April 1997 06:36:31 UTC