HTTP request and response headers are handled by the classes RHTTPHeaders
and THTTPHdrVal
.
Calling GetHeaderCollection()
on RHTTPRequest
and RHTTPResponse
objects
returns the RHTTPHeaders
for the HTTP request and HTTP response
respectively.
RHTTPHeaders
represents the entire message header, that
is, the entire set of header fields in a request or a response. THTTPHdrVal
represents
a value that a single header field can take.
HTTP will set some header fields automatically. The client is not required to add the following to requests:
Content-Length: This
is derived from the client's request MHTTPDataSupplier
.
Connection: This is handled automatically to manage a HTTP/1.1 persistent connection. If a client wants to indicate that the persistent connection is to close, it must add a Connection header.
Host: This is taken from the client's request URL. If a relative URL is supplied, the client must add a Host header.
Transfer-Encoding: This
is added automatically if the client's request MHTTPDataSupplier
specifies
an unknown overall data size.
Authorisation: This is added automatically by the Authentication filter.
Also, HTTP's filters and protocol handler deals automatically with some headers contained in the server response. These are:
Content-Length: This
value is provided through the response body MHTTPDataSupplier
.
Connection: This is handled automatically to manage the HTTP/1.1 persistent connection.
Location: This is handled automatically by the Redirection filter.
Transfer-Encoding: This is handled automatically by the protocol handler, and 'chunked' encodings are removed before presenting the response body to the client.
WWW-Authenticate: This is added automatically by the Authentication filter.