Go學習:獲取HTTP請求的協議/域名/瀏覽器版本/路徑URI

當請求由瀏覽器直接發起請求到服務器中間沒有經過代理轉發的話,則可以採用如下代碼獲取協議,域名等參數。如果經過了轉發則只能由代理服務如HA或者nginx把域名和協議寫在請求頭裏轉發到後端服務,然後通過讀取請求頭參數r.Header.Get()來獲取。

package main

import (
	"fmt"
	"net/http"
)


func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Printf("%s\n", r.URL.RequestURI())
	fmt.Printf("%v\n", r.Proto)
	fmt.Printf("%v\n", r.Host)
	fmt.Printf("%v\n", r.UserAgent())
	fmt.Printf("%v\n", r.URL.Query().Get("mz_id"))

	w.Write([]byte("hello"))
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}
/mz?mz_id=ABCDEEFDAAS
HTTP/1.1
pub.example.com:8080
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:62.0) Gecko/20100101 Firefox/62.0
ABCDEEFDAAS

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章