美文网首页📙Go语言:进阶大全
Go语言:服务器获取真实IP地址

Go语言:服务器获取真实IP地址

作者: 白祤星 | 来源:发表于2019-10-11 18:54 被阅读0次

代码实例:


package main

import (
    "net"
    "net/http"
    "strings"
)

func GetIP(w http.ResponseWriter, r *http.Request) {
    // 尝试从 X-Forwarded-For 中获取
    xForwardedFor := r.Header.Get(`X-Forwarded-For`)
    ip := strings.TrimSpace(strings.Split(xForwardedFor, `,`)[0])
    if ip == `` {
        // 尝试从 X-Real-Ip 中获取
        ip = strings.TrimSpace(r.Header.Get(`X-Real-Ip`))
        if ip == `` {
            // 直接从 Remote Addr 中获取
            _ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr))
            if err != nil {
                panic(err)
            } else {
                ip = _ip
            }
        }
    }
    // 从控制台输出获取到的IP地址
    println(ip)
}

func main() {
    http.HandleFunc(`/`, GetIP)
    err := http.ListenAndServe(`:80`, nil)
    if err != nil {
        panic(err)
    }
}

相关文章

网友评论

    本文标题:Go语言:服务器获取真实IP地址

    本文链接:https://www.haomeiwen.com/subject/sluxmctx.html