LoginSignup
5
5

More than 5 years have passed since last update.

Echo で HTTP リクエストヘッダをミドルウェアでダンプする

Posted at

Echo で実装した Web アプリケーションにおいて、リバースプロキシ経由のアクセスで X-Forwarded-For ヘッダが付いているか確認するために HTTP リクエストヘッダを標準出力にダンプする処理をミドルウェアで書いた。

ミドルウェアは、無名関数でサクッと書けるので便利。

package main

import (
    "github.com/labstack/echo"
    "fmt"
    "log"
    "os"
)

func main() {
    e := echo.New()
    e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
        return func(c echo.Context) error {
            if err := next(c); err != nil {
                c.Error(err)
            }

            output := fmt.Sprintf("%#v", c.Request().Header)

            os.Stdout.Write([]byte(output + "\n"))
            return next(c)
        }
    })

    log.Fatal(e.Start(":9001"))
}

ローカルで実行して、ブラウザでアクセスすると下記のように出力される。

http.Header{"Cache-Control":[]string{"max-age=0"}, "User-Agent":[]string{"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}, "Accept":[]string{"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}, "Accept-Encoding":[]string{"gzip, deflate, br"}, "Accept-Language":[]string{"ja,en-US;q=0.9,en;q=0.8"}, "Connection":[]string{"keep-alive"}, "Upgrade-Insecure-Requests":[]string{"1"}}
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5