codec
codec

Reputation: 8796

How to get remote client's IPV4 address from request object

I am using go-gin as server and rendering an html using the code like the following

func dashboardHandler(c *gin.Context) {
    c.HTML(200, "dashboard", gin.H{
        "title": "Dashboard"
})

Along with title I want to pass the remote client's IPV4 address as well. I tried using the following code to get the IP address but for localhost it gives me ::1:56797 as output. My server is running on localhost:8080

ip, port, err := net.SplitHostPort(c.Request.RemoteAddr)
fmt.Println(ip + ":" + port)
if err != nil {
    fmt.Println(err.Error())
}

I followed Correct way of getting Client's IP Addresses from http.Request (Golang) for reference. Is there any way I get the IPV4 address from the request?

Upvotes: 0

Views: 6314

Answers (1)

Said  Saifi
Said Saifi

Reputation: 2388

you can use this function to get the ip and user agent, but it will give a bracket character if you are trying from localhost but if you try from somewhere else it will work.

func GetIPAndUserAgent(r *http.Request) (ip string, user_agent string) {
        ip = r.Header.Get("X-Forwarded-For")
        if ip == "" {
            ip = strings.Split(r.RemoteAddr, ":")[0]
        }

        user_agent = r.UserAgent()
        return ip, user_agent

    }

Upvotes: 2

Related Questions