这是一道腾讯的面试题
如果有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
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


