让白癜风患者直面异样眼光 http://hunan.ifeng.com/a/20170626/5773085_0.shtml这是一道腾讯的面试题
如果有x-forwarded-for的请求头,则取其中的第一个IP,否则取建立连接socket的remoteAddr。
而x-forwarded-for基本已成为了基于proxy的标准HTTP头,格式如下,可见第一个IP代表其真实的IP,可以参考MDNX-Forwarded-For
X-Forwarded-For:.0..,70.41.3.18,...X-Forwarded-For:client,proxy1,proxy2
以下是koa获取IP的方法
getips(){constproxy=this.app.proxy;constval=this.get(this.app.proxyIpHeader);letips=proxyval?val.split(/\s*,\s*/):[];if(this.app.maxIpsCount0){ips=ips.slice(-this.app.maxIpsCount);}returnips;},getip(){if(!this[IP]){this[IP]=this.ips[0]
this.socket.remoteAddress
;}returnthis[IP];}
作者:shanyue
链接: