node.js - 为什么 Express 总是返回本地 IP 地址?
问题描述
我想要做的是获取客户端的 IP 地址。我尝试了两种不同的方法来做到这一点。但是,当我通过 Postman 向端点(根)发送 GET 请求时,两者都返回 ::1,这是本地 IP 地址。对此,我想知道我是否可以在开发中获得自己的IP地址(192.XXX.XXX.XXX)。对我来说,返回 ::1 没有意义,因为即使 Express 在本地运行,来自 Postman 的请求的 IP 地址应该是我自己的 IP 地址。谁能向我解释为什么会发生这种情况?如果您还可以告诉我如何从 Express 取回我自己的 IP 地址,我将不胜感激。我的实现代码如下:
import express from 'express'
import cors from 'cors'
const port = process.env.PORT || 9000
const app = express()
app.use(express.json())
app.use(cors())
//method 1
app.get('/', (req, res) => {
const ip = req.ip;
//const ip = getIP
res.status(200).send(ip)
})
//method 2
const getIP = (req) => {
return request.headers['x-forwarded-for']
? request.headers['x-forwarded-for']
: (request.connection && request.connection.remoteAddress)
? request.connection.remoteAddress
: (request.connection.socket && request.connection.socket.remoteAddress)
? request.connection.socket.remoteAddress
: (request.socket && request.socket.remoteAddress)
? request.socket.remoteAddress
: '0.0.0.0';
}
app.listen(port, () => console.log(`listening on localhost: ${port}`))
解决方案
推荐阅读
- mysql - 有没有更优雅的方法来查询多个 OR 和 AND 上的多对多表?
- java - Eclipse - “不兼容的 JVM。JVM 版本 1.8.0_261 不适合此产品。版本:需要 11 或更高版本”
- c++ - 是否可以保证一个类型的多个 type_index 实例比较相等?
- python - Pandas:从带有猜测分隔符的“tsv”文件中提取的不规则 dataframe.colums
- java - 如何使用 kotlin 检测 java 文件方法体的结尾?
- qt - 如何判断 QPlainTextEdit 是否滚动?
- javascript - 问题.js | 修复 applyForce 的更新问题
- flutter - Flutter - Clipping Path 曲线非常锐利
- java - 找不到书面方法 java.util.function 的符号
- outlook - NVDA 未在 Outlook 中读取带有背景图像的文本