req.ip不能在快递中更改

时间:2018-01-03 07:27:44

标签: javascript node.js express

我想在node.js的快速框架中更改req.ip的值,但是req.ip仍然保持相同的值,而自定义的memeber ex:req.my_var工作;我无法弄清楚这两种情况的区别......有什么想法吗?

var truncateIPAddress = function (req, res, next) {
  req.ip = req.ip.substring(0,30); // still the same value in other route
  req.my_var = 'test'; //it works
  next();
}
app.use(truncateIPAddress);
..........
app.use('/', index);

2 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为req.ip使用Express在Node JS中提供客户端的IP地址。根据您的代码,您尝试覆盖req.ip的值。

这适用于您的truncateIPAddress功能,但由于其范围,它的覆盖值会再次重置。

因此,您必须选择全局变量并全局替换该值,并在所需位置上使用该全局变量。

谢谢!

答案 1 :(得分:0)

其实你可以。这是执行此操作的代码:

Object.defineProperty(app.request, 'ip', {
  configurable: true,
  enumerable: true,
  get: function () { return this.get('Client-IP') }
})