公用ip npm软件包在Digital Ocean服务器中不起作用

时间:2019-06-25 10:12:12

标签: node.js

我已经使用public-ip npm软件包来获取用户的公共IP地址,它提供的公共IP地址与http://whatismyipaddress.com中的公共IP地址相同,但是在Digital Ocean服务器中使用它时给我的是数字海洋IP地址,而不是用户的公用IP地址。

我已经在nodejs上尝试过。

const publicIp = require('public-ip');
const ip = await publicIp.v4(); //to save ip in user

我想要用户的公共IP地址,而不是获取数字海洋IP地址。

2 个答案:

答案 0 :(得分:0)

只需查询https://api.ipify.org/

// web
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.ipify.org');
xhr.send();
xhr.onload = function() {
  if (xhr.status != 200) {
    console.log(`Error ${xhr.status}: ${xhr.statusText}`); // e.g. 404: Not Found
  } else { // show the result
    console.log(xhr.response)
  }
};

// nodejs
const https = require('https');

https.get('https://api.ipify.org', (resp) => {
  let data = '';

  // A chunk of data has been recieved.
  resp.on('data', (chunk) => {
    data += chunk;
  });

  // The whole response has been received. Print out the result.
  resp.on('end', () => {
    console.log(JSON.parse(data));
  });

}).on("error", (err) => {
  console.log("Error: " + err.message);
});

答案 1 :(得分:0)

此功能publicIp.v4()public-ip模块将帮助您获取(检测)运行该应用程序的服务器或计算机的公共IP(而不是用户的IP)。而且Digital Ocean返回其公共IP的价值是正确的。

在您的情况下,您需要从用户的请求中检索用户的IP,它可以称为远程客户端IP地址。最好检查这个问题Express.js: how to get remote client address

希望它可以提供帮助。