BETA

grpc-gatewayでCookieをmetadataに設定しない

投稿日:2018-10-14
最終更新:2018-10-24
※この記事は外部サイト(http://hikouki.hateblo.jp/entry/2018/01/24...)からのクロス投稿です

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)
}
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@hikouki'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!