【发布时间】:2015-10-13 21:53:26
【问题描述】:
我有一个合法的业务需要测试我们的服务器使用虚假 IP 地址的工作方式。我们在很多不同的地方使用request.ip,我不想用假IP地址替换“request.ip”的每个实例,所以我想我会在应用程序的入口点重新定义它(开始回调链)。但是,当request.ip 显然将自身改回“127.0.0.1”时,我遇到了一些意外行为!
这是我插入到“handle”方法中的(CoffeeScript)代码:
spanishIp ='37.35.128.128'
request.ip = spanishIp
console.log "ip: #{request.ip} / #{spanishIp}"
导致以下日志:
ip: 127.0.0.1 / 37.35.128.128
显然,request.ip 在将其设置为“37.35.128.128”和 console.log 语句之间被重新定义回我的实际 IP 地址 (127.0.0.1)。
当我将代码进一步移动到回调链中时,它按预期工作。
Node/Express 是否有可能在运行时有一些内部机制重复将request.ip 设置为用户的实际 IP 地址?
【问题讨论】:
-
是的,我希望它为每个请求设置。在多主/多接口机器上,您可以为每个请求获取不同的 IP。