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.
13
commonBuildOnce sync.Once
14
commonLowerHeader map[string]string // Go-Canonical-Case -> lower-case
15
commonCanonHeader map[string]string // lower-case -> Go-Canonical-Case
18
func buildCommonHeaderMapsOnce() {
19
commonBuildOnce.Do(buildCommonHeaderMaps)
22
func buildCommonHeaderMaps() {
30
"access-control-allow-credentials",
31
"access-control-allow-headers",
32
"access-control-allow-methods",
33
"access-control-allow-origin",
34
"access-control-expose-headers",
35
"access-control-max-age",
36
"access-control-request-headers",
37
"access-control-request-method",
41
"content-disposition",
58
"if-unmodified-since",
65
"proxy-authorization",
72
"strict-transport-security",
82
commonLowerHeader = make(map[string]string, len(common))
83
commonCanonHeader = make(map[string]string, len(common))
84
for _, v := range common {
85
chk := http.CanonicalHeaderKey(v)
86
commonLowerHeader[chk] = v
87
commonCanonHeader[v] = chk
91
func lowerHeader(v string) (lower string, ascii bool) {
92
buildCommonHeaderMapsOnce()
93
if s, ok := commonLowerHeader[v]; ok {
96
return asciiToLower(v)
99
func canonicalHeader(v string) string {
100
buildCommonHeaderMapsOnce()
101
if s, ok := commonCanonHeader[v]; ok {
104
return http.CanonicalHeaderKey(v)