5.4.1 Introduction
HTTP/1.1 defines a variety of header types that have the potential to be verbose. As an example, the Accept header is illustrated below showing lengths varying from 35 octets to 106 octets:
Accept: audio/*; q=0.2, audio/basic (35 octets)
Accept: text/*; q=0.3, text/html; q=0.7, text/html; level=1, text/html; level=2; q=0.4, */*; q=0.5 (92 octets)
Accept: text/xml, application/xml, application/xhtml+xml, text/html; q=0.9, text/plain; q=0.8, image/png, */*; q=0.5 (106 octets)
Given the packet size constraints for many IEEE 2030.5 networks, the set of HTTP headers supported must be curtailed through best practices recommendations realizing that a host cannot prevent a verbose message from being sent to it.
IEEE 2030.5 provides a set of mandatory, optional, and discouraged recommendations for each HTTP header. IEEE 2030.5 implementations SHOULD employ only mandatory HTTP headers, minimize the use of optional HTTP headers, and avoid the use of discouraged headers.
5.4.2 HTTP header field recommended usage
In the following table, the HTTP/1.1 header fields have been annotated with the following labels:
MANDATORY: Support for the field is REQUIRED.
OPTIONAL: Support for this field is left to the implementer’s discretion.
DISCOURAGED: To conserve code space and/or bandwidth, support for this field, while not explicitly forbidden, is not recommended.
Table 1 summarizes the recommended use of HTTP/1.1 headers in IEEE Std 2030.5. This table is provided as informative guidance, particularly to suit constrained networks and devices, and IETF RFC 7230, IETF RFC 7231, IETF RFC 7232, IETF RFC 7233, IETF RFC 7234, and IETF RFC 7235 are the authoritative
references for compliance.
Table 1 —HTTP headers
Header | Used in message type | IETF RFC required/optional | IEEE 2030.5 use | |
Accept | Request | Optional | Mandatory | |
Accept-Charset | Request | Optional | Discouraged | |
Accept-Encoding | Request | Optional | Discouraged | |
Accept-Language | Request | Optional | Discouraged | |
Accept-Ranges | Request | Response | Optional | Discouraged |
Age | Response | Optional (required for a cache) | Discouraged | |
Allow | Response | Required | Mandatory | |
Authorization | Request | Response | Optional | Discouraged |
Cache-Control | Request | Response | Optional | Discouraged |
Connection | Request | Optional (required in some situations [e.g., HTTP/1.1 applications that do not support persistent connections]) | Optional (mandatory in some situations) | |
Content-Encoding | Response | Optional (required when an encoding is applied) | Discouraged | |
Content-Language | Response | Optional | Discouraged | |
Content-Length | Request | Response | Optional (required in many situations, see Section 3.3.2 of IETF RFC 7230) | Optional (required in many situations, see Section 3.3.2 of IETF RFC 7230) |
Content-Location | Response | Optional | Discouraged | |
Content-MD5 | Response | Optional | Discouraged | |
Content-Range | Response | Optional | Optional (see 9.8.2.3) | |
Content-Type | Request | Response | Required | Mandatory |
Cookies | Request | Optional | Discouraged | |
Date | Request | Response | Mandatory | Mandatory |
ETag | Response | Optional | Optional (see 9.8.2.3) | |
Expect | Request | Optional | Discouraged | |
Expires | Response | Optional | Discouraged | |
From | Request | Optional | Discouraged | |
Host | Request | Required | Mandatory | |
If-Match | Request | Optional | Discouraged | |
If-Modified-Since | Request | Optional | Discouraged | |
If None-Match | Request | Optional | Discouraged | |
If-Range | Request | Optional | Discouraged | |
If-Unmodified-Since | Request | Optional | Discouraged | |
Last-Modified | Response | Optional | Discouraged | |
Location | Response | Optional | Mandatory in many situations (e.g., POST responses) | |
Max-Forwards | Request | Optional | Discouraged | |
Pragma | Request | Response | Optional | Discouraged |
Proxy-Authenticate | Response | Optional | Discouraged | |
Proxy-Authorization | Request | Optional | Discouraged | |
Range | Request | Optional | Optional (see 9.8.2.3) | |
Referer | Request | Optional | Discouraged | |
Retry-After | Response | Optional | Discouraged | |
Server | Response | Optional | Discouraged | |
Set-Cookie | Response | Optional | Discouraged | |
TE | Request | Discouraged | Discouraged | |
Trailer | Response | Discouraged | Discouraged | |
Transfer-Encoding | Response | Optional | Discouraged | |
Upgrade | Request | Optional | Discouraged | |
User-Agent | Request | Optional | Discouraged | |
Vary | Response | Discouraged | Discouraged | |
Via | Request | Response | Discouraged | |
Warning | Request | Response | Discouraged | Discouraged |
WWW-Authenticate | Response | Optional | Discouraged | |