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
发布了51 篇原创文章 · 获赞 3 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/pengpengzhou/article/details/105163844
今日推荐