In order to be be HTTP/1.1 compliant:
"""All HTTP/1.1 applications MUST be able to receive and decode the "chunked" transfer-coding, and MUST ignore chunk-extension extensions they do not understand.
Chunked transfer coding/encoding is actually quite complex :
- HTTP 1.0 messages contains a header, and a body of a known content-length or teminated by end of file.
- HTTP/1.1 messages are the same format, but have another equally valid format which consists of a header, a sequence of chunks of the body, preceded by a length indicator with the final chunk indicated by a 0 length. After this trailers (which have the same format as headers) may follow, and must be dealt with.
TWiki does not handle
ChunkedTransferEncoding, and it is relatively complex to deal with, and it is designed for help in optimising persistant connections, but additionally helps with cacheability of the results of
CGI (or similar) scripts which start sending data before knowing the length of the object they're sending. (The chunks let the recipient know transfer is still in progress, the trailer allows the definition of a content-length value which helps with cacheability)
Any client that does not support it may not send an indication that it supports HTTP/1.1 responses.
See
RFC 2616
for more details.
Furthermore, you can send a request including HTTP/1.1 headers from a client that is only HTTP/1.0 compliant to a server including a protocol version of HTTP/1.0 - for example the following request is valid, even though it contains lots of HTTP/1.1 features:
GET / HTTP/1.0
Host: www.google.com
Cache-Control: no-cache
Max-Forwards: 0
If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
The response however will be HTTP/1.0 compliant - that is not contain chunked coding & so on. The reason for this is because
"""Since the protocol version indicates the protocol capability of the sender""" - ie "give me an HTTP/1.0 compliant response please", not "the following message is an HTTP/1.1 compliant request".
This simple/key misunderstanding is the source of numerous bugs in TWiki. A patch that downgrades TWiki's requests to
correctly request HTTP/1.0 responses is in
ProxiedIncludesBrokenImplementationBug .
For those curious for a walk through HTTP history may wish to look at
http://www.w3.org/Protocols/HTTP/HTTP2.html
- it's rather entertaining from a modern perspective.
--
MichaelSparks - 15 Aug 2003
Topic revision: r2 - 2005-07-22
- JackWan