使用Golang获取GRPC请求和响应标头

Trying to extract GRPC request and response header using golang language. Is there any way to extract the headers.

You can make use of the metadata

client-unary:

var header, trailer metadata.MD // variable to store header and trailer
r, err := client.SomeRPC(
    ctx,
    someRequest,
    grpc.Header(&header),    // will retrieve header
    grpc.Trailer(&trailer),  // will retrieve trailer
)

// do something with header and trailer

server: Metadata can be retrieved from context using FromIncomingContext:

func (s *server) SomeRPC(ctx context.Context, in *pb.SomeRequest) (*pb.SomeResponse, err) {
    md, ok := metadata.FromIncomingContext(ctx)
    // do something with metadata
}

client-stream:

stream, err := client.SomeStreamingRPC(ctx)

// retrieve header
header, err := stream.Header()

// retrieve trailer
trailer := stream.Trailer()

source: https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md#unary-call