在http处理程序中,有一种方法可以获取接收到请求的服务器的端口,而无需使用http.Hijacker
来获得TCP连接,如果没有办法劫持该连接,但仍然使用提供的http.ResponseWriter
答案 0 :(得分:3)
使用request context从http.LocalAddrContextKey获取本地地址。
a, ok := req.Context().Value(http.LocalAddrContextKey).(net.Addr)
if !ok {
// handle address not found
}
从地址获取TCP端口:
ta, ok := a.(*net.TCPAddr)
if !ok {
// handle unknown address type
}
port := ta.Port