📚
golangでHttpリクエストヘッダの取得
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