服务器端如何获取客户端 IP 地址

核心提示这是一道腾讯的面试题如果有x-forwarded-for的请求头,则取其中的第一个 IP,否则取建立连接 socket 的 remoteAddr。而x-forwarded-for基本已成为了基于 proxy 的标准HTTP头,格式如下,可见

这是一道腾讯的面试题

如果有x-forwarded-for的请求头,则取其中的第一个 IP,否则取建立连接 socket 的 remoteAddr。

而x-forwarded-for基本已成为了基于 proxy 的标准HTTP头,格式如下,可见第一个 IP 代表其真实的 IP,可以参考 MDN X-Forwarded-For

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178 X-Forwarded-For: , ,

以下是koa获取 IP 的方法

get ips {const proxy = this.app.proxy;const val = this.get;let ips = proxy && val? val.split: [];if {ips = ips.slice;}return ips;},get ip {if {this[IP] = this.ips[0] || this.socket.remoteAddress || '';}return this[IP];}

作者:shanyue

链接:https://juejin.im/post/5efa89b3e51d453468104d0e

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 
友情链接
鄂ICP备19019357号-22