Search code examples
goprotocol-buffersgrpc

grpc header/cookie in Go


I want to do place on server application which can be called by Go APP and Java app both.

for some reason ,there's a cookie authentication and oAuth mechanism ,so I want to set one Go app as Auth Micro-service for the authentication purpose.

As GRPC is built on the HTTP2 ,so The headers and cookies are on the protocol.but I did not find out how to carry on header and cookie when the rpc occurs,implemented by Go, on GitHub I only found the JAVA-Implementation for headers at :

https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/header

Can anybody give me some direction of Go implementation for this purpose?


Solution

  • Headers in gRPC are called "Metadata." Clients can only send "headers". Servers can send both "headers" and "trailers."

    You want to:

    • Use the google.golang.org/grpc/metadata package and metadata.NewOutgoingContext() to send metadata from the client-side.
    • Use grpc.SendHeader() and grpc.SetTrailer() to send metadata from the server-side.
    • Use the grpc.Header() and grpc.Trailer() CallOptions for receiving the Metadata on the client-side.
    • Use metadata.FromIncomingContext() for receiving metadata on the server-side.