accesslog: multiple times the same header name.
This commit is contained in:
parent
6d8512bda0
commit
5d3dc3348e
2 changed files with 9 additions and 5 deletions
|
@ -10,6 +10,7 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
@ -344,7 +345,7 @@ func (h *Handler) redactHeaders(headers http.Header, fields logrus.Fields, prefi
|
||||||
for k := range headers {
|
for k := range headers {
|
||||||
v := h.config.Fields.KeepHeader(k)
|
v := h.config.Fields.KeepHeader(k)
|
||||||
if v == types.AccessLogKeep {
|
if v == types.AccessLogKeep {
|
||||||
fields[prefix+k] = headers.Get(k)
|
fields[prefix+k] = strings.Join(headers.Values(k), ",")
|
||||||
} else if v == types.AccessLogRedact {
|
} else if v == types.AccessLogRedact {
|
||||||
fields[prefix+k] = "REDACTED"
|
fields[prefix+k] = "REDACTED"
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ func lineCount(t *testing.T, fileName string) int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoggerHeaderFields(t *testing.T) {
|
func TestLoggerHeaderFields(t *testing.T) {
|
||||||
expectedValue := "expectedValue"
|
expectedValues := []string{"AAA", "BBB"}
|
||||||
|
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
desc string
|
desc string
|
||||||
|
@ -191,7 +191,10 @@ func TestLoggerHeaderFields(t *testing.T) {
|
||||||
Path: testPath,
|
Path: testPath,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
req.Header.Set(test.header, expectedValue)
|
|
||||||
|
for _, s := range expectedValues {
|
||||||
|
req.Header.Add(test.header, s)
|
||||||
|
}
|
||||||
|
|
||||||
logger.ServeHTTP(httptest.NewRecorder(), req, http.HandlerFunc(func(writer http.ResponseWriter, r *http.Request) {
|
logger.ServeHTTP(httptest.NewRecorder(), req, http.HandlerFunc(func(writer http.ResponseWriter, r *http.Request) {
|
||||||
writer.WriteHeader(http.StatusOK)
|
writer.WriteHeader(http.StatusOK)
|
||||||
|
@ -201,9 +204,9 @@ func TestLoggerHeaderFields(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
if test.expected == types.AccessLogDrop {
|
if test.expected == types.AccessLogDrop {
|
||||||
assert.NotContains(t, string(logData), expectedValue)
|
assert.NotContains(t, string(logData), strings.Join(expectedValues, ","))
|
||||||
} else {
|
} else {
|
||||||
assert.Contains(t, string(logData), expectedValue)
|
assert.Contains(t, string(logData), strings.Join(expectedValues, ","))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue