Fix HTTP headers not being canonicalized in tracing
This commit is contained in:
parent
0bf6442c5d
commit
90702d93ab
2 changed files with 67 additions and 2 deletions
|
|
@ -127,8 +127,8 @@ func NewTracer(tracer trace.Tracer, capturedRequestHeaders, capturedResponseHead
|
|||
return &Tracer{
|
||||
Tracer: tracer,
|
||||
safeQueryParams: safeQueryParams,
|
||||
capturedRequestHeaders: capturedRequestHeaders,
|
||||
capturedResponseHeaders: capturedResponseHeaders,
|
||||
capturedRequestHeaders: canonicalizeHeaders(capturedRequestHeaders),
|
||||
capturedResponseHeaders: canonicalizeHeaders(capturedResponseHeaders),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -346,3 +346,18 @@ func defaultStatus(code int) (codes.Code, string) {
|
|||
}
|
||||
return codes.Unset, ""
|
||||
}
|
||||
|
||||
// canonicalizeHeaders converts a slice of header keys to their canonical form.
|
||||
// It uses http.CanonicalHeaderKey to ensure that the headers are in a consistent format.
|
||||
func canonicalizeHeaders(headers []string) []string {
|
||||
if headers == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
canonicalHeaders := make([]string, len(headers))
|
||||
for i, header := range headers {
|
||||
canonicalHeaders[i] = http.CanonicalHeaderKey(header)
|
||||
}
|
||||
|
||||
return canonicalHeaders
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue