You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
// Copyright 2018 The Go Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style |
|
// license that can be found in the LICENSE file. |
|
|
|
// Package httpguts provides functions implementing various details |
|
// of the HTTP specification. |
|
// |
|
// This package is shared by the standard library (which vendors it) |
|
// and x/net/http2. It comes with no API stability promise. |
|
package httpguts |
|
|
|
import ( |
|
"net/textproto" |
|
"strings" |
|
) |
|
|
|
// ValidTrailerHeader reports whether name is a valid header field name to appear |
|
// in trailers. |
|
// See RFC 7230, Section 4.1.2 |
|
func ValidTrailerHeader(name string) bool { |
|
name = textproto.CanonicalMIMEHeaderKey(name) |
|
if strings.HasPrefix(name, "If-") || badTrailer[name] { |
|
return false |
|
} |
|
return true |
|
} |
|
|
|
var badTrailer = map[string]bool{ |
|
"Authorization": true, |
|
"Cache-Control": true, |
|
"Connection": true, |
|
"Content-Encoding": true, |
|
"Content-Length": true, |
|
"Content-Range": true, |
|
"Content-Type": true, |
|
"Expect": true, |
|
"Host": true, |
|
"Keep-Alive": true, |
|
"Max-Forwards": true, |
|
"Pragma": true, |
|
"Proxy-Authenticate": true, |
|
"Proxy-Authorization": true, |
|
"Proxy-Connection": true, |
|
"Range": true, |
|
"Realm": true, |
|
"Te": true, |
|
"Trailer": true, |
|
"Transfer-Encoding": true, |
|
"Www-Authenticate": true, |
|
}
|
|
|