Express.js:如何获取远程客户端地址

2024-01-20

我不完全明白我应该如何获取远程用户IP地址。

假设我有一个简单的请求路线,例如:

app.get(/, function (req, res){
   var forwardedIpsStr = req.header('x-forwarded-for');
   var IP = '';

   if (forwardedIpsStr) {
      IP = forwardedIps = forwardedIpsStr.split(',')[0];  
   }
});

上述方法获取真实用户IP地址是否正确,或者是否有更好的方法? 那么代理呢?


如果您在 NGiNX 之类的代理后面运行,只有这样您才应该检查'x-forwarded-for':

var ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress 

如果代理不是“你的”,我就不会信任'x-forwarded-for'标头,因为它可以被欺骗。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Express.js:如何获取远程客户端地址 的相关文章

  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • Nodejs 调试生产中的错误

    我有一个在生产环境中运行的 Nodejs 脚本 我不太可能 千分之一 遇到这样的错误 TypeError value is out of bounds at checkInt buffer js 1009 11 at Buffer writ
  • 使用socket.io进行用户身份验证

    我已经红色了这个教程 http howtonode org socket io auth http howtonode org socket io auth 它展示了如何使用express和socket io对用户进行身份验证 但是有没有一
  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • Node.js http get 请求错误事件未拾取 404 或 403

    我正在对图像发出 HTTP GET 请求 有时图像会以 404 或 403 的形式返回 令我惊讶的是 我必须明确检查这一点 而不是在错误事件中选择它 这是它的工作原理还是我在这里遗漏了一些东西 function processRequest
  • npmjs.org - 找不到自述文件

    我是 npm 包的主要作者scramjet 一个月以来 我遇到了关于可视性的问题README md在 npmjs 中 The npm 中的超燃冲压发动机包 https www npmjs com package scramjet shows
  • 如何在Electron WebView中连接到代理?

    因为我可以通过连接到免费代理服务器 或付费 目前用作电子 JS 解决方案作为桌面应用程序 代理列表服务器示例 http proxylist hidemyass com http proxylist hidemyass com 您可以使用 s
  • 由于 Chrome 修订,Firebase puppeteer PDF 功能超时

    我有一个 Firebase 函数来创建 PDF 文件 最近 由于 Chrome 修订版 而超时 我既不明白错误消息 也不明白出了什么问题 当我在 MacOS 下将其本地部署时 该功能有效 TimeoutError Timed out aft
  • Node.js 重写 toString

    我试图覆盖我的对象的默认 toString 方法 这是代码和问题 function test this code 0 later on I will set these this name test prototype toString f
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • 如何使用Create React App安装React

    嗨 我对反应真的很陌生 我不知道如何实际安装它 也不知道我需要做什么才能在其中编写代码 我下载了node js并且安装了v12 18 3以及NPM 6 14 6 但是每次我尝试在许多网站上提到的create react app安装方法中输入
  • 无法使用 Nest CLI 创建新项目

    我正在关注this https docs nestjs com first steps创建 Nest 项目的教程 我已经安装了Nest CLI使用这个命令 npm i g nestjs cli 我使用以下命令检查了本地安装的软件包列表 发现
  • 如何使用对象数组创建猫鼬模式

    我有这个 json data id 1 name Sample test description this is a sample test category tests points 100 startDate 2018 02 15 00
  • 如何配置 Google 计算引擎以对 Nodejs 服务器使用 HTTPS?

    我想使用 https SSL 在 google 计算引擎中运行 nodejs 和 socket io 服务器 我安装了自签名证书https cloud google com compute docs load balancing http
  • 具有 Firebase (FCM) 推送通知的 Node js

    我正在使用 Node js 开发 REST api 并且有一个休息端点来发送 firebase 推送通知 我的代码如下 const bodyParser require body parser var cors require cors v
  • Mongoose 和 Promise:如何获取查询结果数组?

    使用猫鼬从数据库和 Q 中查询结果以获取承诺 但发现很难只获取可用用户列表 目前我有一些这样的东西 var checkForPerson function person people mongoose model Person Person
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但

随机推荐

  • WPF 在代码后面添加不带键的样式资源

    我正在从 WPF 应用程序的后台代码生成一个 xaml 并希望将样式添加到生成的 xaml 我使用资源字典来存储我的应用程序将访问的样式信息 并根据资源字典中的键将其应用于生成的 xaml 中的相应元素 现在我想将特定样式应用于生成的 xa
  • 运行 AWS CLI 命令时出现“configparser.DuplicateOptionError”

    在mac终端中执行以下命令时出现错误 aws configure 我在网上找不到任何有用的东西 而且我是 mac 和 aws 的新手 有人可以帮我解决吗 其他命令也会发生同样的事情 例如aws version命令如which aws会正常工
  • 房间迁移更改表不添加新列并一次又一次地调用迁移

    所以基本上我正在使用空间并尝试添加从数据库版本 1 到 2 的迁移 但我的 alter 命令不起作用 我当前的实现如下 void init db Room databaseBuilder Global getInstance AppData
  • javascript 语法:函数调用和使用括号

    为什么这有效 但不是这个
  • 将 int 转换为 char 而不使用 ASCII [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我如何将小于 10 的 int 转换为 char 例如 5 gt 5 不使用 ASCII 表将 int 转换为 char 由于数字在标准字符
  • php exec 输出被修剪

    我在 php 中使用 exec 又遇到了另一个麻烦我的操作系统是 suse linux 我使用的是 php 5 1 2 不知何故 当我使用 exec 时 我的输出被修剪 in linux gt ps ef grep java root 35
  • Azure AD - 始终需要范围,因此需要一个默认范围

    我已经为一家企业实施了 Azure AD 好吧 还没有完全完成 目的是只有企业中的人员可以使用它 他们必须位于企业的 Active Directory 中 并且存在仅分配给某些用户的特殊目标角色 范围 REST 端点用这些范围进行注释 在
  • 如何选择与行跨度对应的行?

    我有一个动态生成的表 我试图更改其中某些行的背景颜色 有时有些行具有行跨度 我无法弄清楚如何获取与一个 行 相对应的所有行 我用谷歌搜索了我的大脑 发现这个 jsfiddle 非常接近我需要的 在逻辑意义上 http jsfiddle ne
  • 搜索引擎可以索引 JavaScript 生成的网页吗?

    Google 等搜索引擎可以索引 JavaScript 生成的网页吗 当您右键单击并选择在由 JavaScript 例如使用 GWT 生成的页面中查看源代码时 您看不到动态生成的 HTML 我想 如果搜索引擎也看不到生成的 HTML 那么就
  • AppDomain 中的静态字段

    我正在尝试使用 AppDomain 来管理多线程环境中包含大量静态字段的一些遗留代码 我读到这个问题的答案 如何使用 AppDomain 限制静态类的范围以实现线程安全使用 https stackoverflow com questions
  • 经过一段时间后,OpenEdge ABL 自动关闭是/否消息

    现在我有 消息 Hello World 查看为警报框警告按钮是 否更新 lVariable 如何在 14 秒后自动点击 否 如何以 另一种方式 做到这一点 DEFINE FRAME f message This is your messag
  • Django(主干)和基于类的通用视图:一个表单的初始数据出现在另一个表单中

    我遇到了一个奇怪的问题 数据似乎在不同的视图和请求中持续存在 直到服务器重新启动 我已设法将问题简化为以下代码 foobar models py from django db import models class Foo models M
  • CoreData:注释:无法加载优化模型(React Native)

    我无法再启动我的反应本机应用程序 我昨天更新了XCode 也许和它有关 react native run ios Found Xcode workspace xyz xcworkspace CoreData annotation Faile
  • iPhone 上的“不受信任的服务器证书”

    我正在编写一个 iPhone 应用程序 我想连接到 HTTPS 服务器以获取一些信息 但是 我在控制台中收到错误 NSUnderlyingError 错误域 kCFErrorDomainCFNetwork 代码 1202 UserInfo
  • Django Fabric 同步数据库

    您将如何运行此 django 命令来自动与 Fabric 同步数据库 python manage py syncdb settings app settings test 如果尝试运行 它会卡在 是否要创建超级用户帐户 处 是否可以传递 是
  • Facebook API 错误 191

    我正在尝试将我的项目与 Facebook 集成 我一开始只是尝试登录 获取 Facebook 会话并获取一些用户数据 我在本地开发它 所以我的 Facebook 应用程序设置是 site URL http 127 0 0 1 8888 my
  • 给 Java 桌面应用程序换肤?

    有谁知道一种 皮肤 Java 桌面应用程序的方法吗 例如 Winamp 皮肤或 MirandaIM 皮肤 我不想创造自己的外观和感觉 是的 有几种方法可以做到这一点 但我不知道有谁是真正简单的 看一下Nimbus Swing 的新面貌 ht
  • Math.pow(65,17) % 3233 的令人惊讶的结果

    由于某种原因 在处理大数时 模运算符没有给出正确的输出 请查看代码 double x Math pow 65 17 3233 输出应该是2790但输出是887 0 我确信这很愚蠢 但我无法绕过它 提前致谢 的结果Math pow 65 17
  • 部分代码覆盖率 C# - Nunit

    我有部分代码覆盖率 但我不知道为什么 对于在开始阅读之前喜欢这个问题的人 首先想说 第一篇文章 我的开发生涯还很初级 但我的学习速度相对较快 我认为 所以就这样吧 使用Junit进行测试 并基于MVP 待测试代码 void view Del
  • Express.js:如何获取远程客户端地址

    我不完全明白我应该如何获取远程用户IP地址 假设我有一个简单的请求路线 例如 app get function req res var forwardedIpsStr req header x forwarded for var IP if