网络上的答案获取的ip是服务器的ip或者获取本地ip,然后通过ip获取详细地址,要么报错,要么或者客户端的位置不正确…直接给我整麻了~
网络答案:
获取局域网ip

func GetOutBoundIP() (ip string, err error) {conn, err := net.Dial("udp", "8.8.8.8:53")if err != nil {fmt.Println(err)return}localAddr := conn.LocalAddr().(*net.UDPAddr)ip = strings.Split(localAddr.String(), ":")[0]return
}

获取外网能访问的动态ip,获取的是本机的ip不是客户端的ip

func GetOutBoundIP(ctx iris.Context) (ip string, err error) {resp, err := http.Get("http://myexternalip.com/raw")if err != nil {return "",err}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)ip = string(body)return
}

后来发现以上都不适合或者客户端ip

获取客户端ip

//通过iris的context内部函数获取请求头部获取ip
func GetOutBoundIP(ctx iris.Context) (string, error) {//从请求头部的X-REAL-IP获取Ipip := ctx.Request().Header.Get("X-REAL-IP")netIP := net.ParseIP(ip)if netIP != nil {return ip, nil}//从请求头部的X-FORWARDED-FOR获取Ipips := ctx.Request().Header.Get("X-FORWARDED-FOR")splitIps := strings.Split(ips, ",")for _, ip := range splitIps {netIP := net.ParseIP(ip)if netIP != nil {return ip, nil}}//从请求头部的RemoteAddr获取Ipip, _, err := net.SplitHostPort(ctx.Request().RemoteAddr)if err != nil {return "", err}netIP = net.ParseIP(ip)if netIP != nil {return ip, nil}return "", fmt.Errorf("正确ip获取失败")
}

参考地址:https://www.topgoer.com/Iris/%E8%B7%AF%E7%94%B1/Context%E6%96%B9%E6%B3%95.html

✨踩坑不易,还希望各位大佬支持一下\textcolor{gray}{踩坑不易,还希望各位大佬支持一下}踩坑不易,还希望各位大佬支持一下

【golang】golang获取客户端ip相关推荐

  1. c# 获取客户端IP地址方法

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString();  客户端主机名: Request.ServerVaria ...

  2. JS获取客户端IP地址、MAC和主机名的7个方法汇总

    今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...

  3. 如何在PHP中获取客户端IP地址[重复]

    本文翻译自:How to get the client IP address in PHP [duplicate] This question already has an answer here: ...

  4. ASP.NET Core 中使用负载均衡时获取客户端 IP

    在使用负载均衡的情况下,通过 context.Connection.RemoteIpAddress 获取到的是负载均衡的 IP 地址,需要通过 X-Forwarded-For 请求头才能获取到客户端的 ...

  5. ASP.NET获取客户端IP及MAC地址

    ASP.NET获取客户端IP及MAC地址 2008-12-01 14:50 ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票.留言.评论 等系统的时候防止别人恶意操作,导致数据的虚 ...

  6. JAVA CXF、XFIRE、AXIS webservice获取客户端IP

    2019独角兽企业重金招聘Python工程师标准>>> import javax.annotation.Resource; import javax.servlet.http.Htt ...

  7. 深入分析几种PHP获取客户端IP的情况

    深入分析几种PHP获取客户端IP的情况 http://mount.blog.51cto.com/764124/528084 2011-03-27 16:13:29 标签:代理服务器 客户端 文章 PH ...

  8. openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息

    openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息 为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面.很多情况下系统需要根据用户访问的IP信息 ...

  9. 获取客户端IP和MAC地址

    小编是菜鸟,这两天拿到一个需求,登录时判断ip地址是否允许登录,这几天做下来小编遇见了好多坑,给大家分享一下. 系统架构:.net+java 首先,不管怎么样http请求头才是获取ip地址的唯一方式: ...

  10. php获取ip几种方法区别,php获取客户端IP地址的几种方法

    php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVE ...

最新文章

  1. css选择器顺序的小技巧
  2. 逆袭!? 期待下一个“BCH”出现
  3. php中禁用下拉框,php – Tinymce,禁用numlist下拉列表
  4. 计算机英语发展历史,英语翻译计算机发展史,领域与未来发展 一、计算机发展史简介 人类所使用的计算工具是随着生产的发展和社会的进步,从简单到复...
  5. php yaf smarty,Yaf 结合用户自定义的视图(模板)引擎Smarty(Yaf + Smarty)
  6. 华为nova 7 se鸿蒙,荣耀v40和华为Nova7Pro哪个好-参数对比-更值得入手
  7. linux下CPP的认识
  8. Jenkins学习总结(7)——搭建Jenkins+Maven+SVN+Tomcat持续集成环境
  9. Git - 推送当前分支快捷方式
  10. 拉普拉斯变换转换简表
  11. 腾讯云图(TCV)使用指南
  12. linux软件源怎么看,Linux软件源
  13. 区块链相关技术学习总结(1)——区块链以及区块链技术入门详解
  14. 优动漫PAINT软件中混合模式使用实例
  15. 解决阿里云oss 图片跨域问题
  16. 再次推荐下这本书 —— DDIA
  17. idea2019.2版本gradle 使用offline
  18. 如何通过电脑cmd查看android设备日志
  19. PS关于打开图片或者直接拖入图片结果显示程序错误
  20. 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...

热门文章

  1. Javascript格式化工具
  2. 【亲测有效】硬盘/分区修复教程
  3. 基于PLC四层电梯模型控制系统课程设计
  4. 基于51单片机的自动电梯控制模拟系统设计
  5. 重要知识结构-持续更新中
  6. 用C 程序理解汉字的机内码表示
  7. Matlab:数据包络分析(DEA)企业效率
  8. maven配置阿里云仓库
  9. 前端开发实习面经总结
  10. Mac下安装Adobe pr