ios - 服务器端如何将来自同一手机的 2 个不同请求解释为具有 2 个不同的 IP?

标签 ios node.js express ip

我在 Node.js 上运行一个服务器,用于监听来自移动网站 (IOS) 的请求。 我正在使用以下内容解释请求中的 IP:

ipAddress = function (req) {
  var header = req.headers['x-forwarded-for']
  if (header) {
    var ips = header.split(/\s*,\s*/)
    if (ips.length > 0) {
      return ips[0]
    }
  }
  return req.ip
}

我注意到有时我会针对来自同一手机的不同请求获得不同的 IP。但还没弄清楚为什么。

有什么想法可能导致这种情况吗? 我做了一些研究,发现根据请求查找 IP 的最佳方法似乎是在 header 中使用 x-forwarded-for - 是这样吗?

最佳答案

猜测,因为它们是移动的。设备可以在小区之间移动,在蜂窝网络和 Wi-Fi 之间移动,或者遭受瞬时蜂窝网络断开和重新连接。这些事情中的任何一个都可能导致设备被分配一个新的 IP 地址。

此外,许多蜂窝网络提供商使用网络地址转换 (NAT) 和代理。可能是不同的请求通过提供商网络中的不同代理或 NAT 设备。

大多数代理服务器添加 x-forwarded-for header ,但这不是强制性的。 NAT 设备不会添加 header 。

关于ios - 服务器端如何将来自同一手机的 2 个不同请求解释为具有 2 个不同的 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671773/

相关文章:

objective-c - ZXING是否与自动引用计数兼容

node.js - 在异步插件中正确使用 HandleScope

javascript - 如何使用 FFmpeg 将专辑封面添加到 mp3 流?

javascript - 如何在 mysql/express 中使用变量作为列名?

javascript - Expressjs语言库

mysql - MySQL 查询中的变量导致错误

ios - 监听iOS API调用?

ios - 如何使用 swift 构建准确的 iPhone 频闪灯

ios - 如何判断我的意图是否在快捷方式应用程序中运行?

javascript - 使用 lodash 检查空对象返回 false