1 // Copyright 2014 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
14 commonBuildOnce sync.Once
15 commonLowerHeader map[string]string // Go-Canonical-Case -> lower-case
16 commonCanonHeader map[string]string // lower-case -> Go-Canonical-Case
19 func buildCommonHeaderMapsOnce() {
20 commonBuildOnce.Do(buildCommonHeaderMaps)
23 func buildCommonHeaderMaps() {
31 "access-control-allow-origin",
35 "content-disposition",
52 "if-unmodified-since",
58 "proxy-authorization",
65 "strict-transport-security",
73 commonLowerHeader = make(map[string]string, len(common))
74 commonCanonHeader = make(map[string]string, len(common))
75 for _, v := range common {
76 chk := http.CanonicalHeaderKey(v)
77 commonLowerHeader[chk] = v
78 commonCanonHeader[v] = chk
82 func lowerHeader(v string) string {
83 buildCommonHeaderMapsOnce()
84 if s, ok := commonLowerHeader[v]; ok {
87 return strings.ToLower(v)