Documentation
¶
Index ¶
- Constants
- Variables
- func AddProductInformationToUserAgent(r *http.Request, product, productVersion, comment string) (err error)
- func AddToUserAgent(r *http.Request, elements ...string) (err error)
- func CreateLinkHeader(link, relation, contentType string) string
- func FetchAuthorisation(r *http.Request) string
- func FetchUserAgent(r *http.Request) string
- func FetchWebSocketSubProtocols(r *http.Request) (subProtocols []string)
- func FetchWebsocketAuthorisation(r *http.Request) (authorisationHeader string)
- func GenerateAuthorizationHeaderValue(scheme string, token string) (value string, err error)
- func ParseAuthorisationValue(authHeader string) (scheme string, token string, err error)
- func ParseAuthorizationHeader(r *http.Request) (string, string, error)
- func SetAuthorisation(r *http.Request, authorisation string) (err error)
- func SetAuthorisationIfNotPresent(r *http.Request, authorisation string) (err error)
- func SetAuthorisationToken(r *http.Request, scheme, token string) (err error)
- func SetContentLocationHeader(w http.ResponseWriter, location string)
- func SetLocationHeaders(w http.ResponseWriter, location string)
- type Header
- type Headers
- func (hs Headers) Append(h *Header)
- func (hs Headers) AppendHeader(key, value string)
- func (hs Headers) AppendToRequest(r *http.Request)
- func (hs Headers) AppendToResponse(w http.ResponseWriter)
- func (hs Headers) Empty() bool
- func (hs Headers) Has(h *Header) bool
- func (hs Headers) HasHeader(key string) bool
- type IHTTPHeaders
Constants ¶
const ( HeaderWebsocketProtocol = "Sec-WebSocket-Protocol" //https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Sec-WebSocket-Protocol HeaderWebsocketVersion = "Sec-WebSocket-Version" HeaderWebsocketKey = "Sec-WebSocket-Key" HeaderWebsocketAccept = "Sec-WebSocket-Accept" HeaderWebsocketExtensions = "Sec-WebSocket-Extensions" HeaderConnection = "Connection" HeaderVersion = "Version" HeaderAcceptVersion = "Accept-Version" HeaderHost = "Host" // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/host // https://greenbytes.de/tech/webdav/draft-ietf-httpapi-deprecation-header-latest.html#sunset HeaderSunset = "Sunset" // https://datatracker.ietf.org/doc/html/rfc8594 HeaderDeprecation = "Deprecation" // https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-deprecation-header-02 HeaderLink = headers.Link // https://datatracker.ietf.org/doc/html/rfc8288 // TUS Headers https://tus.io/protocols/resumable-upload#headers HeaderUploadOffset = "Upload-Offset" HeaderTusVersion = "Tus-Version" HeaderUploadLength = "Upload-Length" HeaderTusResumable = "Tus-Resumable" HeaderTusExtension = "Tus-Extension" HeaderTusMaxSize = "Tus-Max-Size" HeaderXHTTPMethodOverride = "X-HTTP-Method-Override" HeaderXWWWFormURLEncoded = "application/x-www-form-urlencoded" HeaderContentType = "Content-Type" )
Variables ¶
var ( // SafeHeaders corresponds to headers which do not store personal data. SafeHeaders = []string{ HeaderVersion, HeaderAcceptVersion, HeaderHost, HeaderSunset, HeaderDeprecation, HeaderLink, HeaderWebsocketVersion, HeaderWebsocketAccept, HeaderWebsocketExtensions, HeaderConnection, HeaderUploadOffset, HeaderTusVersion, HeaderUploadLength, HeaderTusResumable, HeaderTusExtension, HeaderTusMaxSize, HeaderXHTTPMethodOverride, headers.Accept, headers.AcceptCharset, headers.AcceptEncoding, headers.AcceptLanguage, headers.CacheControl, headers.ContentLength, headers.ContentMD5, headers.ContentType, headers.DoNotTrack, headers.IfMatch, headers.IfModifiedSince, headers.IfNoneMatch, headers.IfRange, headers.IfUnmodifiedSince, headers.MaxForwards, headers.Pragma, headers.Range, headers.Referer, headers.UserAgent, headers.TE, headers.Via, headers.Warning, headers.AcceptDatetime, headers.XRequestedWith, headers.AccessControlAllowOrigin, headers.AccessControlAllowMethods, headers.AccessControlAllowHeaders, headers.AccessControlAllowCredentials, headers.AccessControlExposeHeaders, headers.AccessControlMaxAge, headers.AccessControlRequestMethod, headers.AccessControlRequestHeaders, headers.AcceptPatch, headers.AcceptRanges, headers.Allow, headers.ContentEncoding, headers.ContentLanguage, headers.ContentLocation, headers.ContentDisposition, headers.ContentRange, headers.ETag, headers.Expires, headers.LastModified, headers.Link, headers.Location, headers.P3P, headers.ProxyAuthenticate, headers.Refresh, headers.RetryAfter, headers.Server, headers.TransferEncoding, headers.Upgrade, headers.Vary, headers.XPoweredBy, headers.XHTTPMethodOverride, headers.XRatelimitLimit, headers.XRatelimitRemaining, headers.XRatelimitReset, } )
Functions ¶
func AddProductInformationToUserAgent ¶
func AddProductInformationToUserAgent(r *http.Request, product, productVersion, comment string) (err error)
AddProductInformationToUserAgent adds some product information to the `User Agent`.
func AddToUserAgent ¶
AddToUserAgent adds some information to the `User Agent`.
func CreateLinkHeader ¶
CreateLinkHeader creates a link header for a relation and mimetype
func FetchAuthorisation ¶
FetchAuthorisation fetches the value of `Authorization` header.
func FetchUserAgent ¶
FetchUserAgent fetches the value of the `User-Agent` header.
func FetchWebSocketSubProtocols ¶
FetchWebSocketSubProtocols fetches the values of `Sec-WebSocket-Protocol` header https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Sec-WebSocket-Protocol.
func FetchWebsocketAuthorisation ¶
FetchWebsocketAuthorisation tries to find the authorisation header values in the case of websocket It will look in the `Authorization` header but will also look at some workaround suggested [here](https://ably.com/blog/websocket-authentication#:~:text=While%20the%20WebSocket%20browser%20API,token%20in%20the%20request%20header) and [there](https://github.com/kubernetes/kubernetes/pull/47740) If found using the workarounds, it will set the Authorization header with the determined value
func ParseAuthorisationValue ¶
ParseAuthorisationValue determines the different element of a `Authorization` header value. and makes sure it has 2 parts <scheme> <token>
func ParseAuthorizationHeader ¶
ParseAuthorizationHeader fetches the `Authorization` header and parses it.
func SetAuthorisation ¶
SetAuthorisation sets the value of the `Authorization` header.
func SetAuthorisationIfNotPresent ¶
SetAuthorisationIfNotPresent sets the value of the `Authorization` header if not already set.
func SetAuthorisationToken ¶
SetAuthorisationToken defines the `Authorization` header.
func SetContentLocationHeader ¶
func SetContentLocationHeader(w http.ResponseWriter, location string)
SetContentLocationHeader sets the `Content-Location` header
func SetLocationHeaders ¶
func SetLocationHeaders(w http.ResponseWriter, location string)
SetLocationHeaders sets the location errors for `POST` requests.
Types ¶
type Headers ¶
func NewHeaders ¶
func NewHeaders() *Headers
func SanitiseHeaders ¶
SanitiseHeaders sanitises a collection of request headers not to include any with personal data
func (Headers) AppendHeader ¶
func (Headers) AppendToRequest ¶
func (Headers) AppendToResponse ¶
func (hs Headers) AppendToResponse(w http.ResponseWriter)