gpt4 book ai didi

javascript - nodejs - 仅当来自服务器 ip 时才允许请求

转载 作者:行者123 更新时间:2023-11-30 16:36:29 25 4
gpt4 key购买 nike

如果请求不是来自服务器,是否可以阻止路由?我在服务器上安装了一个 http 客户端,它向我不想公开的 Web 服务发出获取请求。问题是 http 客户端没有登录到应用程序中,服务器将其视为匿名用户。

到目前为止,这是我尝试过的方法,但我不知道我应该在请求中的哪个位置查找请求者的 ip,或者它是否是实现我想做的事情的正确方法:

function isFromServer (req, res, next) {
if(req.ip === '127.0.0.1') return next();
else {
var err = new Error('Not Found');
err.status = 404;
return next(err);
}
}

//the webservice I want to allow only to the http client installed on the server
router.get('/[0-9]{3}$', isFromServer, function(req, res, next){
var codecs = req.url.split('/')[1];
res.render('metadata', {codecs: codecs});
});

最佳答案

根据您的语法,我假设您使用的是 Express。在这种情况下,获取客户端 IP 的直接方法是:

req.ip // → "127.0.0.1"

您可以看到它使用的逻辑,当该数组是从 x-forwarded-for header 构造时,从代理地址数组 req.ips 中获取第一项:

defineGetter(req, 'ip', function ip(){
var trust = this.app.get('trust proxy fn');
return proxyaddr(this, trust);
});

如果您不使用 express,请尝试使用:

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

这应该会处理大多数配置,并以与上述 Express 函数类似的方式工作。

来源:

关于javascript - nodejs - 仅当来自服务器 ip 时才允许请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com