Sam*_*Sam 29 javascript node.js express
req.connection.remoteAddress,req.headers ['x-forwarded-for'],req.ip,req.ips,这一切意味着什么?
是否有一种直接的方法来简单地获取客户端/用户代理的IP地址,以便在Node.js/Express中向我的站点发出请求?我不了解所有代理内容或者req对象的所有属性之间的所有差异.另外,我不明白Express的'trust proxy'选项是什么.
有人能给我一个直接的解释,说明所有这些属性之间的差异,并回答我如何只是简单地得到客户的IP?
Svb*_*ker 18
// Get client IP address from request object ----------------------
getClientAddress = function (req) {
return (req.headers['x-forwarded-for'] || '').split(',')[0]
|| req.connection.remoteAddress;
};
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的,由于代理的潜在使用,您确实应该使用req.ip而不是像很多人推荐的那样使用 X-Forwarded-For 标头。只要您正确地将代理配置为可信代理,req.ip总会返回最终用户的 IP 地址。
例如,如果您有一个从 8.8.8.8 连接的代理,您将执行以下操作:
var express = require('express');
var app = express();
app.set('trust proxy', '8.8.8.8');
Run Code Online (Sandbox Code Playgroud)
由于您信任代理,因此现在 X-Forwarded-For 标头中传递的内容将存储在 中req.ip,但前提是它源自受信任的代理之一。
有关信任代理的更多信息可以在此处找到。
现在,正如其他人在评论中指出的那样;特别是在本地开发时,您可能会得到ip“::ffff:127.0.0.1”格式的信息。
为了始终获取 IPv4 地址,我有:
getClientAddress = function (req) {
return req.ip.split(":").pop();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54846 次 |
| 最近记录: |