Subject: WebDAV header typing

From: Lisa Dusseault <[email-masked]>
Date: Wed, 7 Jul 2004 15:51:03 -0700

HTTP classifies headers as entity headers, general headers, request 
headers or response headers.  Jim Luther suggested a while back that we 
should have classified the DAV headers accordingly.  Here are the 
definitional sections from RFC2616:

Entity-header fields define metainformation about the entity-body or,
    if no body is present, about the resource identified by the request.

General-header: There are a few header fields which have general 
applicability for
    both request and response messages, but which do not apply to the
    entity being transferred. These header fields apply only to the
message being transmitted.
Example: Upgrade, indicating additional protocols supported by the 
client.

  The response-header fields allow the server to pass additional
    information about the response which cannot be placed in the Status-
    Line. These header fields give information about the server and about
    further access to the resource identified by the Request-URI.

The request-header fields allow the client to pass additional
    information about the request, and about the client itself, to the
    server. These fields act as request modifiers, with semantics
    equivalent to the parameters on a programming language method
    invocation.

Beyond this, there's some unofficial explanation here 
(http://www.tcpipguide.com/free/t_HTTPGeneralHeaders.htm).

Thus:
  - DAV must be a general-header, just like Upgrade, unless it's a 
response header because it only appears on responses.
  - Depth, Destination, Force-Authentication, If, Overwrite and Timeout 
are all simply request headers, like If-Match  and Range.
  - Lock-Token is an entity-header like Content-Language and Expires -- 
on either the request or the response, it provides additional 
information about the resource addressed in the request.

But what does this buy us?  Besides limiting how they're used (e.g. 
prevent the server from using the Depth header on a response), I can't 
see how the definition helps implementors.  Jim perhaps you could 
explain what I'm missing?

Lisa