首页 > 解决方案 > 为什么 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}`))

标签: node.jsexpressip

解决方案


推荐阅读