Imports #
"net/textproto"
"strings"
"net"
"strings"
"unicode/utf8"
"golang.org/x/net/idna"
"net/textproto"
"strings"
"net"
"strings"
"unicode/utf8"
"golang.org/x/net/idna"
var badTrailer = map[string]bool{...}var isTokenTable = [256]bool{...}See the validHostHeader comment.
var validHostByte = [256]bool{...}HeaderValuesContainsToken reports whether any string in values contains the provided token, ASCII case-insensitively.
func HeaderValuesContainsToken(values []string, token string) boolfunc IsTokenRune(r rune) boolPunycodeHostPort returns the IDNA Punycode version of the provided "host" or "host:port" string.
func PunycodeHostPort(v string) (string, error)ValidHeaderFieldName reports whether v is a valid HTTP/1.x header name. HTTP/2 imposes the additional restriction that uppercase ASCII letters are not allowed. RFC 7230 says: header-field = field-name ":" OWS field-value OWS field-name = token token = 1*tchar tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
func ValidHeaderFieldName(v string) boolValidHeaderFieldValue reports whether v is a valid "field-value" according to
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 :
message-header = field-name ":" [ field-value ]
field-value    = *( field-content | LWS )
field-content  = 
func ValidHeaderFieldValue(v string) boolValidHostHeader reports whether h is a valid host header.
func ValidHostHeader(h string) boolValidTrailerHeader reports whether name is a valid header field name to appear in trailers. See RFC 7230, Section 4.1.2
func ValidTrailerHeader(name string) boolheaderValueContainsToken reports whether v (assumed to be a 0#element, in the ABNF extension described in RFC 7230 section 7) contains token amongst its comma-separated tokens, ASCII case-insensitively.
func headerValueContainsToken(v string, token string) boolfunc isASCII(s string) boolisCTL reports whether b is a control byte, according
to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2
CTL            = 
func isCTL(b byte) boolisLWS reports whether b is linear white space, according to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 LWS = [CRLF] 1*( SP | HT )
func isLWS(b byte) boolisOWS reports whether b is an optional whitespace byte, as defined by RFC 7230 section 3.2.3.
func isOWS(b byte) boollowerASCII returns the ASCII lowercase version of b.
func lowerASCII(b byte) bytetokenEqual reports whether t1 and t2 are equal, ASCII case-insensitively.
func tokenEqual(t1 string, t2 string) booltrimOWS returns x with all optional whitespace removes from the beginning and end.
func trimOWS(x string) stringGenerated with Arrow