Re: P1: Content-Length SHOULD be sent

On Tue, Dec 4, 2012 at 6:19 PM, Adrien W. de Croy <adrien@qbik.com> wrote:
>
> ------ Original Message ------
> From: "Willy Tarreau" <w@1wt.eu>
>>
>> Hi Martin,
>>
>> On Tue, Dec 04, 2012 at 03:08:01PM -0800, Martin Thomson wrote:
>>
>>>
>>> On 4 December 2012 15:05, Zhong Yu <zhong.j.yu@gmail.com> wrote:
>>>>
>>>> On Tue, Dec 4, 2012 at 3:30 PM, Willy Tarreau <w@1wt.eu> wrote:
>>>>>
>>>>>    6.  If this is a request message and none of the above are true,
>>>>> then
>>>>>        the message body length is zero (no message body is present).
>>>>
>>>>
>>>> I think it should simply state
>>>>
>>>>     6.  If this is a request message and none of the above are true,
>>>> then
>>>>         the message contains no body.
>>>
>>>
>>> Is it really useful to distinguish between no body and body with no
>>> content?  I can't imagine a use for such a distinction.
>>>
>>
>>
>> I think the example with the POST that is rejected without a
>> content-length
>> is valid, I have already observed this one, though I don't remember on
>> what server.
>>
> maybe that's a bug in that server?

The server conforms to RFC2616:

the request has no Content-Length/Transfer-Encoding
=> the request has no message body
=> the request has no entity body
=> the POST request contains no entity
=> the request is unintelligible.

My prev quotes from RFC2616

=====

(HTTP messages) consist of ... possibly a message-body.

The message-body (if any) of an HTTP message is used to carry the entity-body

The presence of a message-body in a request is signaled by the
inclusion of a Content-Length or Transfer-Encoding header field in the
request's message-headers.

messages MAY transfer an entity

An entity consists of entity-header fields and an entity-body,
although some *responses* will only include the entity-headers.

An entity-body is only present in a message when a message-body is present

====

We can conclude that

If a request does not have "Content-Length" or "Transfer-Encoding", it
does not contain a message body, it does not contain an entity body,
it does not contain an entity.

If a request has "Content-Length: 0", it contains a message body of 0
bytes, it contain an entity body of 0 bytes, it contain an entity.

This is true regardless of the request method.


> Adrien
>
>>
>>
>> Willy
>>
>>
>>
>>
>

Received on Wednesday, 5 December 2012 00:32:23 UTC