HTTP Request Headers
Abstract
This document talks about http request headers in remo.
It defines the list of standard headers, it explains some of them and it links to relevant documents
Table of Contents
RFC Overview
RFC 2616, Section 5.3 defines the standard http request headers for protocol version 1.1:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.3
Request Header Fields
request-header = Accept ; Section 14.1
| Accept-Charset ; Section 14.2
| Accept-Encoding ; Section 14.3
| Accept-Language ; Section 14.4
| Authorization ; Section 14.8
| Expect ; Section 14.20
| From ; Section 14.22
| Host ; Section 14.23
| If-Match ; Section 14.24
| If-Modified-Since ; Section 14.25
| If-None-Match ; Section 14.26
| If-Range ; Section 14.27
| If-Unmodified-Since ; Section 14.28
| Max-Forwards ; Section 14.31
| Proxy-Authorization ; Section 14.34
| Range ; Section 14.35
| Referer ; Section 14.36
| TE ; Section 14.39
| User-Agent ; Section 14.43
Request-header field names can be extended reliably only in combination with a change
in the protocol version. However, new or experimental header fields MAY be given the
semantics of request- header fields if all parties in the communication recognize them
to be request-header fields. Unrecognized header fields are treated as entity-header fields.
General Header Fields
general-header = Cache-Control ; Section 14.9
| Connection ; Section 14.10
| Date ; Section 14.18
| Pragma ; Section 14.32
| Trailer ; Section 14.40
| Transfer-Encoding ; Section 14.41
| Upgrade ; Section 14.42
| Via ; Section 14.45
| Warning ; Section 14.46
General-header field names can be extended reliably only in combination
with a change in the protocol version. However, new or experimental header
fields may be given the semantics of general header fields if all parties
in the communication recognize them to be general-header fields. Unrecognized
header fields are treated as entity-header fields.
Entity Fields
entity-header = Allow ; Section 14.7
| Content-Encoding ; Section 14.11
| Content-Language ; Section 14.12
| Content-Length ; Section 14.13
| Content-Location ; Section 14.14
| Content-MD5 ; Section 14.15
| Content-Range ; Section 14.16
| Content-Type ; Section 14.17
| Expires ; Section 14.21
| Last-Modified ; Section 14.29
| extension-header
extension-header = message-header
The extension-header mechanism allows additional entity-header fields to be
defined without changing the protocol, but these fields cannot be assumed to
be recognizable by the recipient. Unrecognized header fields SHOULD be ignored
by the recipient and MUST be forwarded by transparent proxies.
Remo is a security software. "We are not ignoring unrecognized header fields*.
But in the future, this behaviour may change.
For the time being, we consider this list of headers as fixed.
Special Stuff
Keep-Alive is a HTTP/1.0 header that is used with HTTP/1.1 with firefox for example.
Headers in remo
| name | type | remo support | remo variable name |
| Accept-Charset | Standard Request Header | supported by default | accept_charset |
| Accept-Encoding | Standard Request Header | supported by default | accept_encoding |
| Accept-Language | Standard Request Header | supported by default | accept_language |
| Accept | Standard Request Header | supported by default | accept |
| Allow | Entity Header | unsupported |
| Authorization | Standard Request Header | unsupported |
| Cache-Control | General Header | supported by default | cache_control |
| Connection | General Header | supported by default | guiprefix_connection |
| Content-Encoding | Entity Header | unsupported |
| Content-Language | Entity Header | unsupported |
| Content-Length | Entity Header | supported by default | content_length |
| Content-Location | Entity Header | unsupported |
| Content-MD5 | Entity Header | unsupported |
| Content-Range | Entity Header | unsupported |
| Content-Type | Entity Header | supported by default | content_type |
| Cookie | Version 0 Netscape Cookie | supported by default (as header!) | cookie |
| Cookie2 | RFC 2965 Cookie | unsupported |
| Date | General Header | unsupported |
| Expect | Standard Request Header | unsupported |
| Expires | Entity Header | unsupported |
| From | Standard Request Header | unsupported |
| Host | Standard Request Header | supported by default | host |
| If-Match | Standard Request Header | unsupported |
| If-Modified-Since | Standard Request Header | unsupported |
| If-None-Match | Standard Request Header | unsupported |
| If-Range | Standard Request Header | unsupported |
| If-Unmodified-Since | Standard Request Header | unsupported |
| Keep-Alive | Old HTTP1.0 header, still in use | supported by default | keep_alive |
| Last-Modified | Entity Header | unsupported |
| Max-Forwards | Standard Request Header | unsupported |
| Pragma | General Header | supported by default | pragma |
| Proxy-Authorization | Standard Request Header | unsupported |
| Range | Standard Request Header | unsupported |
| Referer | Standard Request Header | supported by default | referer |
| TE | Standard Request Header | unsupported |
| Trailer | General Header | unsupported |
| Transfer-Encoding | General Header | unsupported |
| Upgrade | General Header | unsupported |
| User-Agent | Standard Request Header | supported by default | user_agent |
| Via | General Header | unsupported |
| Warning | General Header | unsupported |
The remo variable name corresponds to the HTTP header name as follows:
- Capitalize first letter of every word
- Replace "_" by "-"
- Remove "guiprefix_"
The guiprefix had to be added to the fieldname "connection" because rails knows "connection" as parameter of a db item.