要求。'connection' 已被 @deprecated — 自 v13.0.0 起 — 使用套接字代替

Raz*_*Raz 3 node.js express

我正在尝试使用 Express 获取客户端的 IP:

\n
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;\n
Run Code Online (Sandbox Code Playgroud)\n

当鼠标悬停在 VS Code 中的 req.connection 上时,我收到警告:

\n
(property) IncomingMessage.connection: Socket\n@deprecated \xe2\x80\x94 since v13.0.0 - Use socket instead.\n\n'connection' is deprecatedts(6385)\n
Run Code Online (Sandbox Code Playgroud)\n

如何实现“套接字替代”/查找客户端 IP 的正确方法是什么?

\n

Yve*_*ndo 8

你只需要将http 包文档中标记为Deprecated 的req.connection.remoteAddress替换为,它是 的别名,你可以直接使用req.socket.remoteAddress request.connectionrequest.socketrequest.socket

request.socket是net.Socket的一个实例,您可以在此处检查所有可用的方法

  • `req.socket.localAddress` 表示远程客户端连接的本地 IP 地址,而 `req.socket.remoteAddress` 指的是远程地址。它们指的不是同一个值 (6认同)