HTTP Headers
- Traffic Server HTTP Header System
- Header Functions
- MIME Headers
TS_MIME_FIELD_ACCEPT
TS_MIME_LEN_ACCEPT
TS_MIME_FIELD_ACCEPT_CHARSET
TS_MIME_LEN_ACCEPT_CHARSET
TS_MIME_FIELD_ACCEPT_ENCODING
TS_MIME_LEN_ACCEPT_ENCODING
TS_MIME_FIELD_ACCEPT_LANGUAGE
TS_MIME_LEN_ACCEPT_LANGUAGE
TS_MIME_FIELD_ACCEPT_RANGES
TS_MIME_LEN_ACCEPT_RANGES
TS_MIME_FIELD_AGE
TS_MIME_LEN_AGE
TS_MIME_FIELDALLOW
TS_MIME_LEN_ALLOW
TS_MIME_FIELDAPPROVED
TS_MIME_LEN_APPROVED
TS_MIME_FIELDAUTHORIZATION
TS_MIME_LEN_AUTHORIZATION
TS_MIME_FIELDBYTES
TS_MIME_LEN_BYTES
TS_MIME_FIELDCACHE_CONTROL
TS_MIME_LEN_CACHE_CONTROL
TS_MIME_FIELDCLIENT_IP
TS_MIME_LEN_CLIENT_IP
TS_MIME_FIELDCONNECTION
TS_MIME_LEN_CONNECTION
TS_MIME_FIELDCONTENT_BASE
TS_MIME_LEN_CONTENT_BASE
TS_MIME_FIELDCONTENT_ENCODING
TS_MIME_LEN_CONTENT_ENCODING
TS_MIME_FIELDCONTENT_LANGUAGE
TS_MIME_LEN_CONTENT_LANGUAGE
TS_MIME_FIELDCONTENT_LENGTH
TS_MIME_LEN_CONTENT_LENGTH
TS_MIME_FIELDCONTENT_LOCATION
TS_MIME_LEN_CONTENT_LOCATION
TS_MIME_FIELDCONTENT_MD5
TS_MIME_LEN_CONTENT_MD5
TS_MIME_FIELDCONTENT_RANGE
TS_MIME_LEN_CONTENT_RANGE
TS_MIME_FIELDCONTENT_TYPE
TS_MIME_LEN_CONTENT_TYPE
TS_MIME_FIELDCONTROL
TS_MIME_LEN_CONTROL
TS_MIME_FIELDCOOKIE
TS_MIME_LEN_COOKIE
TS_MIME_FIELDDATE
TS_MIME_LEN_DATE
TS_MIME_FIELDDISTRIBUTION
TS_MIME_LEN_DISTRIBUTION
TS_MIME_FIELDETAG
TS_MIME_LEN_ETAG
TS_MIME_FIELDEXPECT
TS_MIME_LEN_EXPECT
TS_MIME_FIELDEXPIRES
TS_MIME_LEN_EXPIRES
TS_MIME_FIELDFOLLOWUP_TO
TS_MIME_LEN_FOLLOWUP_TO
TS_MIME_FIELDFROM
TS_MIME_LEN_FROM
TS_MIME_FIELDHOST
TS_MIME_LEN_HOST
TS_MIME_FIELDIF_MATCH
TS_MIME_LEN_IF_MATCH
TS_MIME_FIELDIF_MODIFIED_SINCE
TS_MIME_LEN_IF_MODIFIED_SINCE
TS_MIME_FIELDIF_NONE_MATCH
TS_MIME_LEN_IF_NONE_MATCH
TS_MIME_FIELDIF_RANGE
TS_MIME_LEN_IF_RANGE
TS_MIME_FIELDIF_UNMODIFIED_SINCE
TS_MIME_LEN_IF_UNMODIFIED_SINCE
TS_MIME_FIELDKEEP_ALIVE
TS_MIME_LEN_KEEP_ALIVE
TS_MIME_FIELDKEYWORDS
TS_MIME_LEN_KEYWORDS
TS_MIME_FIELDLAST_MODIFIED
TS_MIME_LEN_LAST_MODIFIED
TS_MIME_FIELDLINES
TS_MIME_LEN_LINES
TS_MIME_FIELDLOCATION
TS_MIME_LEN_LOCATION
TS_MIME_FIELDMAX_FORWARDS
TS_MIME_LEN_MAX_FORWARDS
TS_MIME_FIELDMESSAGE_ID
TS_MIME_LEN_MESSAGE_ID
TS_MIME_FIELDNEWSGROUPS
TS_MIME_LEN_NEWSGROUPS
TS_MIME_FIELDORGANIZATION
TS_MIME_LEN_ORGANIZATION
TS_MIME_FIELDPATH
TS_MIME_LEN_PATH
TS_MIME_FIELDPRAGMA
TS_MIME_LEN_PRAGMA
TS_MIME_FIELDPROXY_AUTHENTICATE
TS_MIME_LEN_PROXY_AUTHENTICATE
TS_MIME_FIELDPROXY_AUTHORIZATION
TS_MIME_LEN_PROXY_AUTHORIZATION
TS_MIME_FIELDPROXY_CONNECTION
TS_MIME_LEN_PROXY_CONNECTION
TS_MIME_FIELDPUBLIC
TS_MIME_LEN_PUBLIC
TS_MIME_FIELDRANGE
TS_MIME_LEN_RANGE
TS_MIME_FIELDREFERENCES
TS_MIME_LEN_REFERENCES
TS_MIME_FIELDREFERER
TS_MIME_LEN_REFERER
TS_MIME_FIELDREPLY_TO
TS_MIME_LEN_REPLY_TO
TS_MIME_FIELDRETRY_AFTER
TS_MIME_LEN_RETRY_AFTER
TS_MIME_FIELDSENDER
TS_MIME_LEN_SENDER
TS_MIME_FIELDSERVER
TS_MIME_LEN_SERVER
TS_MIME_FIELDSET_COOKIE
TS_MIME_LEN_SET_COOKIE
TS_MIME_FIELDSUBJECT
TS_MIME_LEN_SUBJECTTS_MIME_LEN_SUBJECT
TS_MIME_FIELDSUMMARY
TS_MIME_LEN_SUMMARY
TS_MIME_FIELDTE
TS_MIME_LEN_TE
TS_MIME_FIELDTRANSFER_ENCODING
TS_MIME_LEN_TRANSFER_ENCODING
TS_MIME_FIELDUPGRADE
TS_MIME_LEN_UPGRADE
TS_MIME_FIELDUSER_AGENT
TS_MIME_LEN_USER_AGENT
TS_MIME_FIELDVARY
TS_MIME_LEN_VARY
TS_MIME_FIELDVIA
TS_MIME_LEN_VIA
TS_MIME_FIELDWARNING
TS_MIME_LEN_WARNING
TS_MIME_FIELDWWW_AUTHENTICATE
TS_MIME_LEN_WWW_AUTHENTICATE
TS_MIME_FIELDXREF
TS_MIME_LEN_XREF
- Marshal Buffers
- URLs
TS_URL_SCHEME_FILE
TS_URL_LEN_FILE
TS_URL_SCHEME_FTP
TS_URL_LEN_FTP
TS_URL_SCHEME_GOPHER
TS_URL_LEN_GOPHER
TS_URL_SCHEME_HTTP
TS_URL_LEN_HTTP
TS_URL_SCHEME_HTTPS
TS_URL_LEN_HTTPS
TS_URL_SCHEME_MAILTO
TS_URL_LEN_MAILTO
TS_URL_SCHEME_NEWS
TS_URL_LEN_NEWS
TS_URL_SCHEME_NNTP
TS_URL_LEN_NNTP
TS_URL_SCHEME_PROSPERO
TS_URL_LEN_PROSPERO
TS_URL_SCHEME_TELNET
TS_URL_LEN_TELNET
TS_URL_SCHEME_WAIS
TS_URL_LEN_WAIS
TS_URL_SCHEME_WS
TS_URL_LEN_WS
TS_URL_SCHEME_WSS
TS_URL_LEN_WSS
An HTTP message consists of the following:
HTTP header
body
trailer
The HTTP header consists of:
A request or response line
An HTTP request line contains a method, URL, and version
A response line contains a version, status code, and reason phrase
A MIME header
A MIME header is comprised of zero or more MIME fields. A MIME field is composed of a field name, a colon, and (zero or more) field values. The values in a field are separated by commas. An HTTP header containing a request line is usually referred to as a request. The following example shows a typical request header:
GET http://www.tiggerwigger.com/ HTTP/1.0
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/5.0 [en] (X11; I; Linux 2.2.3 i686)
Host: www.tiggerwigger.com
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1, *, utf-8
The response header for the above request might look like the following:
HTTP/1.0 200 OK
Date: Fri, 13 Nov 2009 06:57:43 GMT
Content-Location: http://locutus.tiggerwigger.com/index.html
Etag: "07db14afa76be1:1074"
Last-Modified: Thu, 05 Nov 2009 20:01:38 GMT
Content-Length: 7931
Content-Type: text/html
Server: Microsoft-IIS/4.0
Age: 922
Proxy-Connection: close
The following figure illustrates an HTTP message with an expanded HTTP header.
Figure 10.1. HTTP Request/Response and Header Structure

HTTP Request/Response and Header Structure
The figure below shows example HTTP request and response headers.
Figure 10.2. Examples of HTTP Request and Response Headers

Examples of HTTP Request and Response Headers
The marshal buffer or TSMBuffer
is a heap data structure that stores
parsed URLs, MIME headers, and HTTP headers. You can allocate new
objects out of marshal buffers and change the values within the marshal
buffer. Whenever you manipulate an object, you must require the handle
to the object (TSMLoc
) and the marshal buffer containing the object
(TSMBuffer
).
Figure 10.3. Marshal Buffers and Header Locations

Marshal Buffers and Header Locations
The figure above shows the following:
The marshal buffer containing the HTTP request,
reqest_bufp
TSMLoc
location pointer for the HTTP header (http_hdr_loc
)TSMLoc
location pointer for the request URL (url_loc
)TSMLoc
location pointers for the MIME header (mime_hdr_loc
)TSMLoc
location pointers for MIME fields (fieldi_loc
)TSMLoc
location pointer for the next duplicate MIME field (next_dup_loc
)
The diagram also shows that an HTTP header contains pointers to the URL
location and the MIME header location. You can obtain the URL location
from an HTTP header using the function TSHttpHdrUrlGet
. To work with
MIME headers, you can pass either a MIME header location or an HTTP
header location to MIME header functions . If you pass an HTTP header to
a MIME header function, then the system locates the associated MIME
header and executes the MIME header function on the MIME header
location.