在不劫持连接的情况下获取本地HTTP服务器的端口

时间:2018-08-28 14:53:42

标签: go

在http处理程序中,有一种方法可以获取接收到请求的服务器的端口,而无需使用http.Hijacker来获得TCP连接,如果没有办法劫持该连接,但仍然使用提供的http.ResponseWriter

1 个答案:

答案 0 :(得分:3)

使用request contexthttp.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