检查是否来自本地主机的 nodejs 连接。

16 浏览
0 Comments

检查是否来自本地主机的 nodejs 连接。

有没有办法检查nodejs连接的来源?

在javascript中我们这样做:

if (window.location.host == "localhost")
{
    // 做一些操作
}

然而我不知道如何在nodejs中实现,我想要这样做(然后我只需要维护一个文件夹的git仓库)

if (window.location.host == "localhost"){
    // 连接到本地mongodb
}else{
    // 连接到mongodb uri
}

0
0 Comments

问题出现的原因是代码中通过判断主机名是否包含"local"来确定数据库连接的URI。如果更改了计算机的主机名,代码无法正确判断连接是否来自localhost,从而导致连接失败。

解决方法是将判断条件改为判断主机名是否等于"localhost",这样无论主机名是否改变,都能正确判断连接是否来自localhost。修改后的代码如下:

var os = require('os');
var database_uri;
if(os.hostname() === "localhost")
  database_uri = "mongodb://localhost/database";
else
  database_uri = "mongodb://remotehost/database";
//Connect to database
mongoose.connect(database_uri, 
                 function(err){
                   if(err) console.log(err); 
                   else console.log('success');});

0
0 Comments

问题的出现原因是想要检查Node.js连接是否来自本地主机(localhost),通过获取请求的远程地址并将其与"localhost"进行比较来判断。

然而,这种方法可能不够准确,因为req.connection.remoteAddress返回的是IPv6格式的地址,而不是IPv4格式的地址。因此,需要使用正则表达式将IPv6地址转换为IPv4地址。

解决方法是使用req.headers.host来获取主机地址,然后将其与"localhost"进行比较。这样可以确保只有来自本地主机的连接才会被认为是合法的。

以下是修改后的代码示例:

let ipV4 = req.headers.host;
if (ipV4 === 'localhost') {
    // 连接来自本地主机
} else {
    // 连接不是来自本地主机
}

通过这种方法,可以准确地判断Node.js连接是否来自本地主机。

0
0 Comments

问题:如何检查Node.js连接是否来自本地主机?

原因:

- req.connection.remoteAddress已经被废弃,不再建议使用。

解决方法:

- 使用req.socket.remoteAddress来代替req.connection.remoteAddress

在Node.js中,我们经常需要检查连接的来源是否是本地主机。过去我们可以使用req.connection.remoteAddress来获取连接的IP地址,但现在已经被废弃,不再建议使用。取而代之的是使用req.socket.remoteAddress来获取连接的IP地址。

这个问题的出现是因为req.connection.remoteAddress方法已经被废弃。为了解决这个问题,我们需要使用req.socket.remoteAddress方法来代替。

下面是一个示例代码,展示了如何使用req.socket.remoteAddress来检查连接是否来自本地主机:

const http = require('http');
const server = http.createServer((req, res) => {
  const ip = req.socket.remoteAddress;
  
  if (ip === '::1' || ip === '::ffff:127.0.0.1') {
    console.log('Connection is from localhost');
  } else {
    console.log('Connection is not from localhost');
  }
  
  res.end();
});
server.listen(3000, () => {
  console.log('Server is running on port 3000');
});

以上代码创建了一个HTTP服务器,当有连接时,会检查连接的IP地址是否是本地主机(IPv6地址为'::1',IPv4地址为'::ffff:127.0.0.1')。如果是本地主机,则会打印'Connection is from localhost';否则,打印'Connection is not from localhost'。

为了检查Node.js连接是否来自本地主机,我们需要使用req.socket.remoteAddress方法替代已被废弃的req.connection.remoteAddress方法。以上示例代码展示了如何使用req.socket.remoteAddress来检查连接是否来自本地主机。

0