userver: userver/http/common_headers.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
common_headers.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <userver/http/predefined_header.hpp>
4
5/// @file userver/http/common_headers.hpp
6/// @brief Common HTTP header names
7/// @ingroup userver_universal
8
9USERVER_NAMESPACE_BEGIN
10
11/// Common HTTP headers
12namespace http::headers {
13
14// Headers from rfc7231
15
16/// @name Representation Metadata
17/// @{
18inline constexpr PredefinedHeader kContentType{"Content-Type"};
19inline constexpr PredefinedHeader kContentEncoding{"Content-Encoding"};
20inline constexpr PredefinedHeader kContentLanguage{"Content-Language"};
21inline constexpr PredefinedHeader kContentLocation{"Content-Location"};
22inline constexpr PredefinedHeader kContentDisposition{"Content-Disposition"};
23/// @}
24
25/// @name Payload Semantics
26/// @{
27inline constexpr PredefinedHeader kContentLength{"Content-Length"};
28inline constexpr PredefinedHeader kContentRange{"Content-Range"};
29inline constexpr PredefinedHeader kTrailer{"Trailer"};
30inline constexpr PredefinedHeader kTransferEncoding{"Transfer-Encoding"};
31/// @}
32
33/// @name Request Headers - Controls
34/// @{
35inline constexpr PredefinedHeader kCacheControl{"Cache-Control"};
36inline constexpr PredefinedHeader kExpect{"Expect"};
37inline constexpr PredefinedHeader kHost{"Host"};
38inline constexpr PredefinedHeader kMaxForwards{"Max-Forwards"};
39inline constexpr PredefinedHeader kPragma{"Pragma"};
40inline constexpr PredefinedHeader kRange{"Range"};
41inline constexpr PredefinedHeader kTE{"TE"};
42/// @}
43
44/// @name Conditionals
45/// @{
46inline constexpr PredefinedHeader kIfMatch{"If-Match"};
47inline constexpr PredefinedHeader kIfNoneMatch{"If-None-Match"};
48inline constexpr PredefinedHeader kIfModifiedSince{"If-Modified-Since"};
49inline constexpr PredefinedHeader kIfUnmodifiedSince{"If-Unmodified-Since"};
50inline constexpr PredefinedHeader kIfRange{"If-Range"};
51/// @}
52
53/// @name Content Negotiation
54/// @{
55inline constexpr PredefinedHeader kAccept{"Accept"};
56inline constexpr PredefinedHeader kAcceptCharset{"Accept-Charset"};
57inline constexpr PredefinedHeader kAcceptEncoding{"Accept-Encoding"};
58inline constexpr PredefinedHeader kAcceptLanguage{"Accept-Language"};
59/// @}
60
61/// @name Authentication Credentials
62/// @{
63inline constexpr PredefinedHeader kAuthorization{"Authorization"};
64inline constexpr PredefinedHeader kProxyAuthorization{"Proxy-Authorization"};
65inline constexpr PredefinedHeader kApiKey{"X-YaTaxi-API-Key"};
66inline constexpr PredefinedHeader kExternalService{"X-YaTaxi-External-Service"};
67/// @}
68
69/// @name Request Context
70/// @{
71inline constexpr PredefinedHeader kFrom{"From"};
72inline constexpr PredefinedHeader kReferer{"Referer"};
73inline constexpr PredefinedHeader kUserAgent{"User-Agent"};
74inline constexpr PredefinedHeader kXTaxi{"X-Taxi"};
75inline constexpr PredefinedHeader kXRequestedUri{"X-Requested-Uri"};
76inline constexpr PredefinedHeader kXRequestApplication{"X-Request-Application"};
77/// @}
78
79// Response Header Fields
80
81/// @name Control Data
82/// @{
83inline constexpr PredefinedHeader kAge{"Age"};
84inline constexpr PredefinedHeader kExpires{"Expires"};
85inline constexpr PredefinedHeader kDate{"Date"};
86inline constexpr PredefinedHeader kLocation{"Location"};
87inline constexpr PredefinedHeader kRetryAfter{"Retry-After"};
88inline constexpr PredefinedHeader kVary{"Vary"};
89inline constexpr PredefinedHeader kWarning{"Warning"};
90inline constexpr PredefinedHeader kAccessControlAllowHeaders{
91 "Access-Control-Allow-Headers"};
92/// @}
93
94/// @name Validator Header Fields
95/// @{
96inline constexpr PredefinedHeader kETag{"ETag"};
97inline constexpr PredefinedHeader kLastModified{"Last-Modified"};
98/// @}
99
100/// @name Authentication Challenges
101/// @{
102inline constexpr PredefinedHeader kWWWAuthenticate{"WWW-Authenticate"};
103inline constexpr PredefinedHeader kProxyAuthenticate{"Proxy-Authenticate"};
104/// @}
105
106/// @name Response Context
107/// @{
108inline constexpr PredefinedHeader kAcceptRanges{"Accept-Ranges"};
109inline constexpr PredefinedHeader kAllow{"Allow"};
110inline constexpr PredefinedHeader kServer{"Server"};
111/// @}
112
113/// @name Cookie
114/// @{
115inline constexpr PredefinedHeader kSetCookie{"Set-Cookie"};
116/// @}
117
118/// @name Websockets headers
119/// @{
120inline constexpr PredefinedHeader kWebsocketKey{"Sec-WebSocket-Key"};
121inline constexpr PredefinedHeader kWebsocketAccept{"Sec-WebSocket-Accept"};
122inline constexpr PredefinedHeader kWebsocketVersion{"Sec-WebSocket-Version"};
123/// @}
124
125/// @name Extra headers
126/// @{
127inline constexpr PredefinedHeader kConnection{"Connection"};
128inline constexpr PredefinedHeader kUpgrade{"Upgrade"};
129inline constexpr PredefinedHeader kCookie{"Cookie"};
130/// @}
131
132/// @name Tracing headers
133/// @{
134inline constexpr PredefinedHeader kXYaRequestId{"X-YaRequestId"};
135inline constexpr PredefinedHeader kXYaTraceId{"X-YaTraceId"};
136inline constexpr PredefinedHeader kXYaSpanId{"X-YaSpanId"};
137inline constexpr PredefinedHeader kXRequestId{"X-RequestId"};
138inline constexpr PredefinedHeader kXBackendServer{"X-Backend-Server"};
139inline constexpr PredefinedHeader kXTaxiEnvoyProxyDstVhost{
140 "X-Taxi-EnvoyProxy-DstVhost"};
141/// @}
142
143/// @name Baggage header
144/// @{
145inline constexpr PredefinedHeader kXBaggage{"baggage"};
146/// @}
147
148/// @name Generic Yandex headers
149/// @{
150inline constexpr PredefinedHeader kXYandexUid{"X-Yandex-UID"};
151
152// IP address of mobile client, not an IP address of single-hop client.
153inline constexpr PredefinedHeader kXRemoteIp{"X-Remote-IP"};
154/// @}
155
156/// @name Generic Yandex/MLU headers
157/// @{
158inline constexpr PredefinedHeader kXYaTaxiAllowAuthRequest{
159 "X-YaTaxi-Allow-Auth-Request"};
160inline constexpr PredefinedHeader kXYaTaxiAllowAuthResponse{
161 "X-YaTaxi-Allow-Auth-Response"};
162inline constexpr PredefinedHeader kXYaTaxiServerHostname{
163 "X-YaTaxi-Server-Hostname"};
164inline constexpr PredefinedHeader kXYaTaxiClientTimeoutMs{
165 "X-YaTaxi-Client-TimeoutMs"};
166inline constexpr PredefinedHeader kXYaTaxiDeadlineExpired{
167 "X-YaTaxi-Deadline-Expired"};
168inline constexpr PredefinedHeader kXYaTaxiRatelimitedBy{
169 "X-YaTaxi-Ratelimited-By"};
170inline constexpr PredefinedHeader kXYaTaxiRatelimitReason{
171 "X-YaTaxi-Ratelimit-Reason"};
172
173namespace ratelimit_reason {
174inline constexpr std::string_view kCC{"congestion-control"};
175inline constexpr std::string_view kMaxResponseSizeInFlight{
176 "max-response-size-in-flight"};
177inline constexpr std::string_view kMaxPendingResponses{
178 "too-many-pending-responses"};
179inline constexpr std::string_view kGlobal{"global-ratelimit"};
180inline constexpr std::string_view kInFlight{"max-requests-in-flight"};
181} // namespace ratelimit_reason
182/// @}
183
184} // namespace http::headers
185
186USERVER_NAMESPACE_END