grpcurl icon indicating copy to clipboard operation
grpcurl copied to clipboard

Headers are lowercased

Open PavelA85 opened this issue 1 year ago • 1 comments

Hi, I try to provide header with -H "isDebug: true" but header name is lowercased with headerName := strings.ToLower(strings.TrimSpace(pieces[0])) during MetadataFromHeaders

Any reason for this behavior?

PavelA85 avatar Jul 25 '24 20:07 PavelA85

@PavelA85, metadata keys in gRPC (and in HTTP headers) are case-insensitive. In HTTP/2, they are always transmitted in lower-case. This lower-casing is done because the keys in a metadata.MD map must always be lower-case. Since this code is directly creating the map (instead of using methods on the metadata.MD type), it must make sure they are correctly canonicalized. Also see the relevant grpc-go docs.

jhump avatar Jul 26 '24 15:07 jhump