我已经使用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地址。
答案 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
希望它可以提供帮助。