Home | History | Annotate | Download | only in IndustryStandard
      1 /** @file
      2   Hypertext Transfer Protocol -- HTTP/1.1 Standard definitions, from RFC 2616
      3 
      4   This file contains common HTTP 1.1 definitions from RFC 2616
      5 
      6   (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
      7   This program and the accompanying materials
      8   are licensed and made available under the terms and conditions of the BSD License
      9   which accompanies this distribution.  The full text of the license may be found at
     10   http://opensource.org/licenses/bsd-license.php
     11 
     12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     14 **/
     15 
     16 #ifndef __HTTP_11_H__
     17 #define __HTTP_11_H__
     18 
     19 #pragma pack(1)
     20 
     21 ///
     22 /// HTTP Version (currently HTTP 1.1)
     23 ///
     24 /// The version of an HTTP message is indicated by an HTTP-Version field
     25 /// in the first line of the message.
     26 ///
     27 #define HTTP_VERSION        "HTTP/1.1"
     28 
     29 ///
     30 /// HTTP Request Method definitions
     31 ///
     32 /// The Method  token indicates the method to be performed on the
     33 /// resource identified by the Request-URI. The method is case-sensitive.
     34 ///
     35 #define HTTP_METHOD_OPTIONS "OPTIONS"
     36 #define HTTP_METHOD_GET     "GET"
     37 #define HTTP_METHOD_HEAD    "HEAD"
     38 #define HTTP_METHOD_POST    "POST"
     39 #define HTTP_METHOD_PUT     "PUT"
     40 #define HTTP_METHOD_DELETE  "DELETE"
     41 #define HTTP_METHOD_TRACE   "TRACE"
     42 #define HTTP_METHOD_CONNECT "CONNECT"
     43 #define HTTP_METHOD_PATCH   "PATCH"
     44 
     45 ///
     46 /// Connect method has maximum length according to EFI_HTTP_METHOD defined in
     47 /// UEFI2.5 spec so use this.
     48 ///
     49 #define HTTP_METHOD_MAXIMUM_LEN  sizeof (HTTP_METHOD_CONNECT)
     50 
     51 ///
     52 /// Accept Request Header
     53 /// The Accept request-header field can be used to specify certain media types which are
     54 /// acceptable for the response. Accept headers can be used to indicate that the request
     55 /// is specifically limited to a small set of desired types, as in the case of a request
     56 /// for an in-line image.
     57 ///
     58 #define HTTP_HEADER_ACCEPT             "Accept"
     59 
     60 
     61 ///
     62 /// Accept-Charset Request Header
     63 /// The Accept-Charset request-header field can be used to indicate what character sets
     64 /// are acceptable for the response. This field allows clients capable of understanding
     65 /// more comprehensive or special-purpose character sets to signal that capability to a
     66 /// server which is capable of representing documents in those character sets.
     67 ///
     68 #define HTTP_HEADER_ACCEPT_CHARSET     "Accept-Charset"
     69 
     70 ///
     71 /// Accept-Language Request Header
     72 /// The Accept-Language request-header field is similar to Accept,
     73 /// but restricts the set of natural languages that are preferred
     74 /// as a response to the request.
     75 ///
     76 #define HTTP_HEADER_ACCEPT_LANGUAGE    "Accept-Language"
     77 
     78 ///
     79 /// Accept-Ranges Request Header
     80 /// The Accept-Ranges response-header field allows the server to
     81 /// indicate its acceptance of range requests for a resource:
     82 ///
     83 #define HTTP_HEADER_ACCEPT_RANGES      "Accept-Ranges"
     84 
     85 
     86 ///
     87 /// Accept-Encoding Request Header
     88 /// The Accept-Encoding request-header field is similar to Accept,
     89 /// but restricts the content-codings that are acceptable in the response.
     90 ///
     91 #define HTTP_HEADER_ACCEPT_ENCODING    "Accept-Encoding"
     92 
     93 ///
     94 /// Content-Encoding Header
     95 /// The Content-Encoding entity-header field is used as a modifier to the media-type.
     96 /// When present, its value indicates what additional content codings have been applied
     97 /// to the entity-body, and thus what decoding mechanisms must be applied in order to
     98 /// obtain the media-type referenced by the Content-Type header field. Content-Encoding
     99 /// is primarily used to allow a document to be compressed without losing the identity
    100 /// of its underlying media type.
    101 ///
    102 #define HTTP_HEADER_CONTENT_ENCODING   "Content-Encoding"
    103 
    104 ///
    105 /// HTTP Content-Encoding Compression types
    106 ///
    107 
    108 #define HTTP_CONTENT_ENCODING_IDENTITY "identity"  /// No transformation is used. This is the default value for content coding.
    109 #define HTTP_CONTENT_ENCODING_GZIP     "gzip"      /// Content-Encoding: GNU zip format (described in RFC 1952).
    110 #define HTTP_CONTENT_ENCODING_COMPRESS "compress"  /// encoding format produced by the common UNIX file compression program "compress".
    111 #define HTTP_CONTENT_ENCODING_DEFLATE  "deflate"   /// The "zlib" format defined in RFC 1950 in combination with the "deflate"
    112                                                    /// compression mechanism described in RFC 1951.
    113 
    114 
    115 ///
    116 /// Content-Type Header
    117 /// The Content-Type entity-header field indicates the media type of the entity-body sent to
    118 /// the recipient or, in the case of the HEAD method, the media type that would have been sent
    119 /// had the request been a GET.
    120 ///
    121 #define HTTP_HEADER_CONTENT_TYPE       "Content-Type"
    122 //
    123 // Common Media Types defined in http://www.iana.org/assignments/media-types/media-types.xhtml
    124 //
    125 #define HTTP_CONTENT_TYPE_APP_JSON          "application/json"
    126 #define HTTP_CONTENT_TYPE_APP_OCTET_STREAM  "application/octet-stream"
    127 
    128 #define HTTP_CONTENT_TYPE_TEXT_HTML         "text/html"
    129 #define HTTP_CONTENT_TYPE_TEXT_PLAIN        "text/plain"
    130 #define HTTP_CONTENT_TYPE_TEXT_CSS          "text/css"
    131 #define HTTP_CONTENT_TYPE_TEXT_XML          "text/xml"
    132 
    133 #define HTTP_CONTENT_TYPE_IMAGE_GIF         "image/gif"
    134 #define HTTP_CONTENT_TYPE_IMAGE_JPEG        "image/jpeg"
    135 #define HTTP_CONTENT_TYPE_IMAGE_PNG         "image/png"
    136 #define HTTP_CONTENT_TYPE_IMAGE_SVG_XML     "image/svg+xml"
    137 
    138 
    139 ///
    140 /// Content-Length Header
    141 /// The Content-Length entity-header field indicates the size of the entity-body,
    142 /// in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD
    143 /// method, the size of the entity-body that would have been sent had the request been a GET.
    144 ///
    145 #define HTTP_HEADER_CONTENT_LENGTH     "Content-Length"
    146 
    147 ///
    148 /// Transfer-Encoding Header
    149 /// The Transfer-Encoding general-header field indicates what (if any) type of transformation
    150 /// has been applied to the message body in order to safely transfer it between the sender
    151 /// and the recipient. This differs from the content-coding in that the transfer-coding
    152 /// is a property of the message, not of the entity.
    153 ///
    154 #define HTTP_HEADER_TRANSFER_ENCODING  "Transfer-Encoding"
    155 
    156 
    157 ///
    158 /// User Agent Request Header
    159 ///
    160 /// The User-Agent request-header field contains information about the user agent originating
    161 /// the request. This is for statistical purposes, the tracing of protocol violations, and
    162 /// automated recognition of user agents for the sake of tailoring responses to avoid
    163 /// particular user agent limitations. User agents SHOULD include this field with requests.
    164 /// The field can contain multiple product tokens and comments identifying the agent and any
    165 /// subproducts which form a significant part of the user agent.
    166 /// By convention, the product tokens are listed in order of their significance for
    167 /// identifying the application.
    168 ///
    169 #define HTTP_HEADER_USER_AGENT         "User-Agent"
    170 
    171 ///
    172 /// Host Request Header
    173 ///
    174 /// The Host request-header field specifies the Internet host and port number of the resource
    175 /// being requested, as obtained from the original URI given by the user or referring resource
    176 ///
    177 #define HTTP_HEADER_HOST              "Host"
    178 
    179 ///
    180 /// Location Response Header
    181 ///
    182 /// The Location response-header field is used to redirect the recipient to a location other than
    183 /// the Request-URI for completion of the request or identification of a new resource.
    184 /// For 201 (Created) responses, the Location is that of the new resource which was created by
    185 /// the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for
    186 /// automatic redirection to the resource. The field value consists of a single absolute URI.
    187 ///
    188 #define HTTP_HEADER_LOCATION           "Location"
    189 
    190 ///
    191 /// The If-Match request-header field is used with a method to make it conditional.
    192 /// A client that has one or more entities previously obtained from the resource
    193 /// can verify that one of those entities is current by including a list of their
    194 /// associated entity tags in the If-Match header field.
    195 /// The purpose of this feature is to allow efficient updates of cached information
    196 /// with a minimum amount of transaction overhead. It is also used, on updating requests,
    197 /// to prevent inadvertent modification of the wrong version of a resource.
    198 /// As a special case, the value "*" matches any current entity of the resource.
    199 ///
    200 #define HTTP_HEADER_IF_MATCH          "If-Match"
    201 
    202 
    203 ///
    204 /// The If-None-Match request-header field is used with a method to make it conditional.
    205 /// A client that has one or more entities previously obtained from the resource can verify
    206 /// that none of those entities is current by including a list of their associated entity
    207 /// tags in the If-None-Match header field. The purpose of this feature is to allow efficient
    208 /// updates of cached information with a minimum amount of transaction overhead. It is also used
    209 /// to prevent a method (e.g. PUT) from inadvertently modifying an existing resource when the
    210 /// client believes that the resource does not exist.
    211 ///
    212 #define HTTP_HEADER_IF_NONE_MATCH     "If-None-Match"
    213 
    214 
    215 
    216 ///
    217 /// Authorization Request Header
    218 /// The Authorization field value consists of credentials
    219 /// containing the authentication information of the user agent for
    220 /// the realm of the resource being requested.
    221 ///
    222 #define HTTP_HEADER_AUTHORIZATION     "Authorization"
    223 
    224 ///
    225 /// ETAG Response Header
    226 /// The ETag response-header field provides the current value of the entity tag
    227 /// for the requested variant.
    228 ///
    229 #define HTTP_HEADER_ETAG              "ETag"
    230 
    231 ///
    232 /// Custom header field checked by the iLO web server to
    233 /// specify a client session key.
    234 /// Example:     X-Auth-Token: 24de6b1f8fa147ad59f6452def628798
    235 ///
    236 #define  HTTP_HEADER_X_AUTH_TOKEN      "X-Auth-Token"
    237 
    238 ///
    239 /// Expect Header
    240 /// The "Expect" header field in a request indicates a certain set of
    241 /// behaviors (expectations) that need to be supported by the server in
    242 /// order to properly handle this request. The only such expectation
    243 /// defined by this specification is 100-continue.
    244 ///
    245 #define  HTTP_HEADER_EXPECT            "Expect"
    246 
    247 ///
    248 /// Expect Header Value
    249 ///
    250 #define  HTTP_EXPECT_100_CONTINUE       "100-continue"
    251 
    252 #pragma pack()
    253 
    254 #endif
    255