constants.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. package fiber
  2. // HTTP methods were copied from net/http.
  3. const (
  4. MethodGet = "GET" // RFC 7231, 4.3.1
  5. MethodHead = "HEAD" // RFC 7231, 4.3.2
  6. MethodPost = "POST" // RFC 7231, 4.3.3
  7. MethodPut = "PUT" // RFC 7231, 4.3.4
  8. MethodPatch = "PATCH" // RFC 5789
  9. MethodDelete = "DELETE" // RFC 7231, 4.3.5
  10. MethodConnect = "CONNECT" // RFC 7231, 4.3.6
  11. MethodOptions = "OPTIONS" // RFC 7231, 4.3.7
  12. MethodTrace = "TRACE" // RFC 7231, 4.3.8
  13. methodUse = "USE"
  14. )
  15. // MIME types that are commonly used
  16. const (
  17. MIMETextXML = "text/xml"
  18. MIMETextHTML = "text/html"
  19. MIMETextPlain = "text/plain"
  20. MIMETextJavaScript = "text/javascript"
  21. MIMETextCSS = "text/css"
  22. MIMEApplicationXML = "application/xml"
  23. MIMEApplicationJSON = "application/json"
  24. MIMEApplicationJavaScript = "application/javascript"
  25. MIMEApplicationCBOR = "application/cbor"
  26. MIMEApplicationForm = "application/x-www-form-urlencoded"
  27. MIMEOctetStream = "application/octet-stream"
  28. MIMEMultipartForm = "multipart/form-data"
  29. MIMEApplicationMsgPack = "application/vnd.msgpack"
  30. MIMETextXMLCharsetUTF8 = "text/xml; charset=utf-8"
  31. MIMETextHTMLCharsetUTF8 = "text/html; charset=utf-8"
  32. MIMETextPlainCharsetUTF8 = "text/plain; charset=utf-8"
  33. MIMETextJavaScriptCharsetUTF8 = "text/javascript; charset=utf-8"
  34. MIMETextCSSCharsetUTF8 = "text/css; charset=utf-8"
  35. MIMEApplicationXMLCharsetUTF8 = "application/xml; charset=utf-8"
  36. MIMEApplicationJSONCharsetUTF8 = "application/json; charset=utf-8"
  37. )
  38. // HTTP status codes were copied from net/http with the following updates:
  39. // - Rename StatusNonAuthoritativeInfo to StatusNonAuthoritativeInformation
  40. // - Add StatusSwitchProxy (306)
  41. // NOTE: Keep this list in sync with statusMessage
  42. const (
  43. StatusContinue = 100 // RFC 9110, 15.2.1
  44. StatusSwitchingProtocols = 101 // RFC 9110, 15.2.2
  45. StatusProcessing = 102 // RFC 2518, 10.1
  46. StatusEarlyHints = 103 // RFC 8297
  47. StatusOK = 200 // RFC 9110, 15.3.1
  48. StatusCreated = 201 // RFC 9110, 15.3.2
  49. StatusAccepted = 202 // RFC 9110, 15.3.3
  50. StatusNonAuthoritativeInformation = 203 // RFC 9110, 15.3.4
  51. StatusNoContent = 204 // RFC 9110, 15.3.5
  52. StatusResetContent = 205 // RFC 9110, 15.3.6
  53. StatusPartialContent = 206 // RFC 9110, 15.3.7
  54. StatusMultiStatus = 207 // RFC 4918, 11.1
  55. StatusAlreadyReported = 208 // RFC 5842, 7.1
  56. StatusIMUsed = 226 // RFC 3229, 10.4.1
  57. StatusMultipleChoices = 300 // RFC 9110, 15.4.1
  58. StatusMovedPermanently = 301 // RFC 9110, 15.4.2
  59. StatusFound = 302 // RFC 9110, 15.4.3
  60. StatusSeeOther = 303 // RFC 9110, 15.4.4
  61. StatusNotModified = 304 // RFC 9110, 15.4.5
  62. StatusUseProxy = 305 // RFC 9110, 15.4.6
  63. StatusSwitchProxy = 306 // RFC 9110, 15.4.7 (Unused)
  64. StatusTemporaryRedirect = 307 // RFC 9110, 15.4.8
  65. StatusPermanentRedirect = 308 // RFC 9110, 15.4.9
  66. StatusBadRequest = 400 // RFC 9110, 15.5.1
  67. StatusUnauthorized = 401 // RFC 9110, 15.5.2
  68. StatusPaymentRequired = 402 // RFC 9110, 15.5.3
  69. StatusForbidden = 403 // RFC 9110, 15.5.4
  70. StatusNotFound = 404 // RFC 9110, 15.5.5
  71. StatusMethodNotAllowed = 405 // RFC 9110, 15.5.6
  72. StatusNotAcceptable = 406 // RFC 9110, 15.5.7
  73. StatusProxyAuthRequired = 407 // RFC 9110, 15.5.8
  74. StatusRequestTimeout = 408 // RFC 9110, 15.5.9
  75. StatusConflict = 409 // RFC 9110, 15.5.10
  76. StatusGone = 410 // RFC 9110, 15.5.11
  77. StatusLengthRequired = 411 // RFC 9110, 15.5.12
  78. StatusPreconditionFailed = 412 // RFC 9110, 15.5.13
  79. StatusRequestEntityTooLarge = 413 // RFC 9110, 15.5.14
  80. StatusRequestURITooLong = 414 // RFC 9110, 15.5.15
  81. StatusUnsupportedMediaType = 415 // RFC 9110, 15.5.16
  82. StatusRequestedRangeNotSatisfiable = 416 // RFC 9110, 15.5.17
  83. StatusExpectationFailed = 417 // RFC 9110, 15.5.18
  84. StatusTeapot = 418 // RFC 9110, 15.5.19 (Unused)
  85. StatusMisdirectedRequest = 421 // RFC 9110, 15.5.20
  86. StatusUnprocessableEntity = 422 // RFC 9110, 15.5.21
  87. StatusLocked = 423 // RFC 4918, 11.3
  88. StatusFailedDependency = 424 // RFC 4918, 11.4
  89. StatusTooEarly = 425 // RFC 8470, 5.2.
  90. StatusUpgradeRequired = 426 // RFC 9110, 15.5.22
  91. StatusPreconditionRequired = 428 // RFC 6585, 3
  92. StatusTooManyRequests = 429 // RFC 6585, 4
  93. StatusRequestHeaderFieldsTooLarge = 431 // RFC 6585, 5
  94. StatusUnavailableForLegalReasons = 451 // RFC 7725, 3
  95. StatusInternalServerError = 500 // RFC 9110, 15.6.1
  96. StatusNotImplemented = 501 // RFC 9110, 15.6.2
  97. StatusBadGateway = 502 // RFC 9110, 15.6.3
  98. StatusServiceUnavailable = 503 // RFC 9110, 15.6.4
  99. StatusGatewayTimeout = 504 // RFC 9110, 15.6.5
  100. StatusHTTPVersionNotSupported = 505 // RFC 9110, 15.6.6
  101. StatusVariantAlsoNegotiates = 506 // RFC 2295, 8.1
  102. StatusInsufficientStorage = 507 // RFC 4918, 11.5
  103. StatusLoopDetected = 508 // RFC 5842, 7.2
  104. StatusNotExtended = 510 // RFC 2774, 7
  105. StatusNetworkAuthenticationRequired = 511 // RFC 6585, 6
  106. )
  107. // Errors
  108. var (
  109. ErrBadRequest = NewError(StatusBadRequest) // 400
  110. ErrUnauthorized = NewError(StatusUnauthorized) // 401
  111. ErrPaymentRequired = NewError(StatusPaymentRequired) // 402
  112. ErrForbidden = NewError(StatusForbidden) // 403
  113. ErrNotFound = NewError(StatusNotFound) // 404
  114. ErrMethodNotAllowed = NewError(StatusMethodNotAllowed) // 405
  115. ErrNotAcceptable = NewError(StatusNotAcceptable) // 406
  116. ErrProxyAuthRequired = NewError(StatusProxyAuthRequired) // 407
  117. ErrRequestTimeout = NewError(StatusRequestTimeout) // 408
  118. ErrConflict = NewError(StatusConflict) // 409
  119. ErrGone = NewError(StatusGone) // 410
  120. ErrLengthRequired = NewError(StatusLengthRequired) // 411
  121. ErrPreconditionFailed = NewError(StatusPreconditionFailed) // 412
  122. ErrRequestEntityTooLarge = NewError(StatusRequestEntityTooLarge) // 413
  123. ErrRequestURITooLong = NewError(StatusRequestURITooLong) // 414
  124. ErrUnsupportedMediaType = NewError(StatusUnsupportedMediaType) // 415
  125. ErrRequestedRangeNotSatisfiable = NewError(StatusRequestedRangeNotSatisfiable) // 416
  126. ErrExpectationFailed = NewError(StatusExpectationFailed) // 417
  127. ErrTeapot = NewError(StatusTeapot) // 418
  128. ErrMisdirectedRequest = NewError(StatusMisdirectedRequest) // 421
  129. ErrUnprocessableEntity = NewError(StatusUnprocessableEntity) // 422
  130. ErrLocked = NewError(StatusLocked) // 423
  131. ErrFailedDependency = NewError(StatusFailedDependency) // 424
  132. ErrTooEarly = NewError(StatusTooEarly) // 425
  133. ErrUpgradeRequired = NewError(StatusUpgradeRequired) // 426
  134. ErrPreconditionRequired = NewError(StatusPreconditionRequired) // 428
  135. ErrTooManyRequests = NewError(StatusTooManyRequests) // 429
  136. ErrRequestHeaderFieldsTooLarge = NewError(StatusRequestHeaderFieldsTooLarge) // 431
  137. ErrUnavailableForLegalReasons = NewError(StatusUnavailableForLegalReasons) // 451
  138. ErrInternalServerError = NewError(StatusInternalServerError) // 500
  139. ErrNotImplemented = NewError(StatusNotImplemented) // 501
  140. ErrBadGateway = NewError(StatusBadGateway) // 502
  141. ErrServiceUnavailable = NewError(StatusServiceUnavailable) // 503
  142. ErrGatewayTimeout = NewError(StatusGatewayTimeout) // 504
  143. ErrHTTPVersionNotSupported = NewError(StatusHTTPVersionNotSupported) // 505
  144. ErrVariantAlsoNegotiates = NewError(StatusVariantAlsoNegotiates) // 506
  145. ErrInsufficientStorage = NewError(StatusInsufficientStorage) // 507
  146. ErrLoopDetected = NewError(StatusLoopDetected) // 508
  147. ErrNotExtended = NewError(StatusNotExtended) // 510
  148. ErrNetworkAuthenticationRequired = NewError(StatusNetworkAuthenticationRequired) // 511
  149. )
  150. // HTTP Headers were copied from net/http.
  151. const (
  152. HeaderAuthorization = "Authorization"
  153. HeaderProxyAuthenticate = "Proxy-Authenticate"
  154. HeaderProxyAuthorization = "Proxy-Authorization"
  155. HeaderWWWAuthenticate = "WWW-Authenticate"
  156. HeaderAge = "Age"
  157. HeaderCacheControl = "Cache-Control"
  158. HeaderClearSiteData = "Clear-Site-Data"
  159. HeaderExpires = "Expires"
  160. HeaderPragma = "Pragma"
  161. HeaderWarning = "Warning"
  162. HeaderAcceptCH = "Accept-CH"
  163. HeaderAcceptCHLifetime = "Accept-CH-Lifetime"
  164. HeaderContentDPR = "Content-DPR"
  165. HeaderDPR = "DPR"
  166. HeaderEarlyData = "Early-Data"
  167. HeaderSaveData = "Save-Data"
  168. HeaderViewportWidth = "Viewport-Width"
  169. HeaderWidth = "Width"
  170. HeaderETag = "ETag"
  171. HeaderIfMatch = "If-Match"
  172. HeaderIfModifiedSince = "If-Modified-Since"
  173. HeaderIfNoneMatch = "If-None-Match"
  174. HeaderIfUnmodifiedSince = "If-Unmodified-Since"
  175. HeaderLastModified = "Last-Modified"
  176. HeaderVary = "Vary"
  177. HeaderConnection = "Connection"
  178. HeaderKeepAlive = "Keep-Alive"
  179. HeaderAccept = "Accept"
  180. HeaderAcceptCharset = "Accept-Charset"
  181. HeaderAcceptEncoding = "Accept-Encoding"
  182. HeaderAcceptLanguage = "Accept-Language"
  183. HeaderCookie = "Cookie"
  184. HeaderExpect = "Expect"
  185. HeaderMaxForwards = "Max-Forwards"
  186. HeaderSetCookie = "Set-Cookie"
  187. HeaderAccessControlAllowCredentials = "Access-Control-Allow-Credentials"
  188. HeaderAccessControlAllowHeaders = "Access-Control-Allow-Headers"
  189. HeaderAccessControlAllowMethods = "Access-Control-Allow-Methods"
  190. HeaderAccessControlAllowOrigin = "Access-Control-Allow-Origin"
  191. HeaderAccessControlExposeHeaders = "Access-Control-Expose-Headers"
  192. HeaderAccessControlMaxAge = "Access-Control-Max-Age"
  193. HeaderAccessControlRequestHeaders = "Access-Control-Request-Headers"
  194. HeaderAccessControlRequestMethod = "Access-Control-Request-Method"
  195. HeaderOrigin = "Origin"
  196. HeaderTimingAllowOrigin = "Timing-Allow-Origin"
  197. HeaderXPermittedCrossDomainPolicies = "X-Permitted-Cross-Domain-Policies"
  198. HeaderDNT = "DNT"
  199. HeaderTk = "Tk"
  200. HeaderContentDisposition = "Content-Disposition"
  201. HeaderContentEncoding = "Content-Encoding"
  202. HeaderContentLanguage = "Content-Language"
  203. HeaderContentLength = "Content-Length"
  204. HeaderContentLocation = "Content-Location"
  205. HeaderContentType = "Content-Type"
  206. HeaderForwarded = "Forwarded"
  207. HeaderVia = "Via"
  208. HeaderXForwardedFor = "X-Forwarded-For"
  209. HeaderXForwardedHost = "X-Forwarded-Host"
  210. HeaderXForwardedProto = "X-Forwarded-Proto"
  211. HeaderXForwardedProtocol = "X-Forwarded-Protocol"
  212. HeaderXForwardedSsl = "X-Forwarded-Ssl"
  213. HeaderXUrlScheme = "X-Url-Scheme"
  214. HeaderLocation = "Location"
  215. HeaderFrom = "From"
  216. HeaderHost = "Host"
  217. HeaderReferer = "Referer"
  218. HeaderReferrerPolicy = "Referrer-Policy"
  219. HeaderUserAgent = "User-Agent"
  220. HeaderAllow = "Allow"
  221. HeaderServer = "Server"
  222. HeaderAcceptRanges = "Accept-Ranges"
  223. HeaderContentRange = "Content-Range"
  224. HeaderIfRange = "If-Range"
  225. HeaderRange = "Range"
  226. HeaderContentSecurityPolicy = "Content-Security-Policy"
  227. HeaderContentSecurityPolicyReportOnly = "Content-Security-Policy-Report-Only"
  228. HeaderCrossOriginResourcePolicy = "Cross-Origin-Resource-Policy"
  229. HeaderExpectCT = "Expect-CT"
  230. HeaderPermissionsPolicy = "Permissions-Policy"
  231. HeaderPublicKeyPins = "Public-Key-Pins"
  232. HeaderPublicKeyPinsReportOnly = "Public-Key-Pins-Report-Only"
  233. HeaderStrictTransportSecurity = "Strict-Transport-Security"
  234. HeaderUpgradeInsecureRequests = "Upgrade-Insecure-Requests"
  235. HeaderXContentTypeOptions = "X-Content-Type-Options"
  236. HeaderXDownloadOptions = "X-Download-Options"
  237. HeaderXFrameOptions = "X-Frame-Options"
  238. HeaderXPoweredBy = "X-Powered-By"
  239. HeaderXXSSProtection = "X-XSS-Protection"
  240. HeaderLastEventID = "Last-Event-ID"
  241. HeaderNEL = "NEL"
  242. HeaderPingFrom = "Ping-From"
  243. HeaderPingTo = "Ping-To"
  244. HeaderReportTo = "Report-To"
  245. HeaderTE = "TE"
  246. HeaderTrailer = "Trailer"
  247. HeaderTransferEncoding = "Transfer-Encoding"
  248. HeaderSecFetchSite = "Sec-Fetch-Site"
  249. HeaderSecWebSocketAccept = "Sec-WebSocket-Accept"
  250. HeaderSecWebSocketExtensions = "Sec-WebSocket-Extensions"
  251. HeaderSecWebSocketKey = "Sec-WebSocket-Key"
  252. HeaderSecWebSocketProtocol = "Sec-WebSocket-Protocol"
  253. HeaderSecWebSocketVersion = "Sec-WebSocket-Version"
  254. HeaderAcceptPatch = "Accept-Patch"
  255. HeaderAcceptPushPolicy = "Accept-Push-Policy"
  256. HeaderAcceptSignature = "Accept-Signature"
  257. HeaderAltSvc = "Alt-Svc"
  258. HeaderDate = "Date"
  259. HeaderIndex = "Index"
  260. HeaderLargeAllocation = "Large-Allocation"
  261. HeaderLink = "Link"
  262. HeaderPushPolicy = "Push-Policy"
  263. HeaderRetryAfter = "Retry-After"
  264. HeaderServerTiming = "Server-Timing"
  265. HeaderSignature = "Signature"
  266. HeaderSignedHeaders = "Signed-Headers"
  267. HeaderSourceMap = "SourceMap"
  268. HeaderUpgrade = "Upgrade"
  269. HeaderXDNSPrefetchControl = "X-DNS-Prefetch-Control"
  270. HeaderXPingback = "X-Pingback"
  271. HeaderXRequestID = "X-Request-ID"
  272. HeaderXRequestedWith = "X-Requested-With"
  273. HeaderXResponseTime = "X-Response-Time"
  274. HeaderXRobotsTag = "X-Robots-Tag"
  275. HeaderXUACompatible = "X-UA-Compatible"
  276. HeaderAccessControlAllowPrivateNetwork = "Access-Control-Allow-Private-Network"
  277. HeaderAccessControlRequestPrivateNetwork = "Access-Control-Request-Private-Network"
  278. )
  279. // Network types that are commonly used
  280. const (
  281. NetworkTCP = "tcp"
  282. NetworkTCP4 = "tcp4"
  283. NetworkTCP6 = "tcp6"
  284. NetworkUnix = "unix"
  285. )
  286. // Compression types
  287. const (
  288. StrGzip = "gzip"
  289. StrCompress = "compress"
  290. StrIdentity = "identity"
  291. StrBr = "br"
  292. StrDeflate = "deflate"
  293. StrBrotli = "brotli"
  294. StrZstd = "zstd"
  295. )
  296. // Cookie SameSite
  297. // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7
  298. const (
  299. CookieSameSiteDisabled = "disabled" // not in RFC, just control "SameSite" attribute will not be set.
  300. CookieSameSiteLaxMode = "Lax"
  301. CookieSameSiteStrictMode = "Strict"
  302. CookieSameSiteNoneMode = "None"
  303. )
  304. // Route Constraints
  305. const (
  306. ConstraintInt = "int"
  307. ConstraintBool = "bool"
  308. ConstraintFloat = "float"
  309. ConstraintAlpha = "alpha"
  310. ConstraintGUID = "guid"
  311. ConstraintMinLen = "minLen"
  312. ConstraintMaxLen = "maxLen"
  313. ConstraintLen = "len"
  314. ConstraintBetweenLen = "betweenLen"
  315. ConstraintMinLenLower = "minlen"
  316. ConstraintMaxLenLower = "maxlen"
  317. ConstraintBetweenLenLower = "betweenlen"
  318. ConstraintMin = "min"
  319. ConstraintMax = "max"
  320. ConstraintRange = "range"
  321. ConstraintDatetime = "datetime"
  322. ConstraintRegex = "regex"
  323. )