📚

golangでHttpリクエストヘッダの取得

2020/09/27に公開

golangでHttpリクエストのヘッダを取得するには、標準パッケージのhttp.Request.Headerを参照します。
参照の仕方によって、得られる形式は何通りかあります。以下実例。

package main

import (
	"fmt"
	"net/http"
)

// ヘッダ全体を取得する例
func headers(w http.ResponseWriter, r *http.Request) {
	h := r.Header
	fmt.Fprintln(w, h)
}

// ヘッダから特定の要素を取得する例
func header(w http.ResponseWriter, r *http.Request) {
	//要素「Accept-Encoding」を取得
	h := r.Header["Accept-Encoding"]
	fmt.Fprintln(w, h)
}

// ヘッダから特定の要素を、カンマ区切りで取得する例
func headerComma(w http.ResponseWriter, r *http.Request) {
	//要素「Accept-Encoding」を取得
	h := r.Header.Get("Accept-Encoding")
	fmt.Fprintln(w, h)
}

func main() {
	//サーバを作り、各ハンドラ関数をハンドルする
	server := http.Server{
		Addr: "127.0.0.1:8080",
	}
	http.HandleFunc("/headers", headers)
	http.HandleFunc("/header", header)
	http.HandleFunc("/headerComma", headerComma)
	server.ListenAndServe()
}

このコードを実行し、firefoxから各アドレスにアクセスすると、それぞれ次のように表示されます。(表示される値は、使用ブラウザなどの環境によって変わります。)


Discussion