我已经使用了public-ip
NPM软件包获取用户的公共IP地址,它提供了与http://whath whateismyipaddress.com相同的公共IP地址,但是在使用它时在数字海洋服务器中,它为我提供了数字海洋IP地址,而不是用户的公共IP地址。
我已经在nodejs上尝试过。
const publicIp = require('public-ip');
const ip = await publicIp.v4(); //to save ip in user
我想要用户的公共IP地址,而不是获取数字海洋IP地址。
只是查询 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);
});
此功能publicIp.v4()
和public-ip
模块将帮助您获得(检测(运行的服务器或计算机的公共IP(不是用户的IP(。数字海洋返回其公共IP的价值是正确的。
在您的情况下,您需要从用户的请求中检索用户的IP,可以调用远程客户端IP地址。最好检查此问题Express.js:如何获取远程客户端地址
希望它能有所帮助。