【golang】golang获取客户端ip
网络上的答案获取的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相关推荐
- c# 获取客户端IP地址方法
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVaria ...
- JS获取客户端IP地址、MAC和主机名的7个方法汇总
今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...
- 如何在PHP中获取客户端IP地址[重复]
本文翻译自:How to get the client IP address in PHP [duplicate] This question already has an answer here: ...
- ASP.NET Core 中使用负载均衡时获取客户端 IP
在使用负载均衡的情况下,通过 context.Connection.RemoteIpAddress 获取到的是负载均衡的 IP 地址,需要通过 X-Forwarded-For 请求头才能获取到客户端的 ...
- ASP.NET获取客户端IP及MAC地址
ASP.NET获取客户端IP及MAC地址 2008-12-01 14:50 ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票.留言.评论 等系统的时候防止别人恶意操作,导致数据的虚 ...
- JAVA CXF、XFIRE、AXIS webservice获取客户端IP
2019独角兽企业重金招聘Python工程师标准>>> import javax.annotation.Resource; import javax.servlet.http.Htt ...
- 深入分析几种PHP获取客户端IP的情况
深入分析几种PHP获取客户端IP的情况 http://mount.blog.51cto.com/764124/528084 2011-03-27 16:13:29 标签:代理服务器 客户端 文章 PH ...
- openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息 为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面.很多情况下系统需要根据用户访问的IP信息 ...
- 获取客户端IP和MAC地址
小编是菜鸟,这两天拿到一个需求,登录时判断ip地址是否允许登录,这几天做下来小编遇见了好多坑,给大家分享一下. 系统架构:.net+java 首先,不管怎么样http请求头才是获取ip地址的唯一方式: ...
- php获取ip几种方法区别,php获取客户端IP地址的几种方法
php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVE ...
最新文章
- css选择器顺序的小技巧
- 逆袭!? 期待下一个“BCH”出现
- php中禁用下拉框,php – Tinymce,禁用numlist下拉列表
- 计算机英语发展历史,英语翻译计算机发展史,领域与未来发展 一、计算机发展史简介 人类所使用的计算工具是随着生产的发展和社会的进步,从简单到复...
- php yaf smarty,Yaf 结合用户自定义的视图(模板)引擎Smarty(Yaf + Smarty)
- 华为nova 7 se鸿蒙,荣耀v40和华为Nova7Pro哪个好-参数对比-更值得入手
- linux下CPP的认识
- Jenkins学习总结(7)——搭建Jenkins+Maven+SVN+Tomcat持续集成环境
- Git - 推送当前分支快捷方式
- 拉普拉斯变换转换简表
- 腾讯云图(TCV)使用指南
- linux软件源怎么看,Linux软件源
- 区块链相关技术学习总结(1)——区块链以及区块链技术入门详解
- 优动漫PAINT软件中混合模式使用实例
- 解决阿里云oss 图片跨域问题
- 再次推荐下这本书 —— DDIA
- idea2019.2版本gradle 使用offline
- 如何通过电脑cmd查看android设备日志
- PS关于打开图片或者直接拖入图片结果显示程序错误
- 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...
热门文章