grpc-gatewayでCookieをmetadataに設定しない
grpc-gatewayはデフォルトで、一般的なHeaderの値を、Metadataに入れてリクエストを中継します。
ただ、Cookieの値は使わない場合もあるし、 ユーザーに見えるkeyよりも、もっと意味持たせたkeyをMetadataに入れたいとかある。
そんな時は、mux作るときに、ServeMuxOption
を渡してあげれば良いです。
func run() error { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() mux := runtime.NewServeMux( runtime.WithIncomingHeaderMatcher(func(key string) (string, bool) { if key == "Cookie" { // CookieはMetadataに設定しない。 return "", false } return runtime.DefaultHeaderMatcher(key) }), ) opts := []grpc.DialOption{grpc.WithInsecure()} // ... return http.ListenAndServe(":8080", mux) }