js获取当前ip的方法
时间: 2023-09-05 17:14:25 浏览: 151
js 客户端 mac ip 地址
3星 · 编辑精心推荐
1. 使用浏览器API获取IP地址:
可以使用WebRTC API来获取用户的IP地址。WebRTC是一个支持音频和视频通信的开源项目,它提供了一种实时通信的方式。通过使用RTCPeerConnection对象,可以获取到本地IP地址。代码示例如下:
```
var ip;
var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) {
var rtc = new RTCPeerConnection({iceServers:[]});
rtc.createDataChannel('', {reliable:false});
rtc.onicecandidate = function(evt) {
if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
};
rtc.createOffer(function(offerDesc) {
grepSDP(offerDesc.sdp);
rtc.setLocalDescription(offerDesc);
}, function(e){ console.warn("offer failed", e); });
}
function grepSDP(sdp) {
var hosts = [];
sdp.split('\r\n').forEach(function(line, index, arr) {
if (~line.indexOf("a=candidate")) {
var parts = line.split(' '),
addr = parts[4],
type = parts[7];
if (type === 'host') ip = addr;
} else if (~line.indexOf("c=")) {
var parts = line.split(' '),
addr = parts[2];
ip = addr;
}
});
}
```
2. 发送请求到第三方API:
可以通过向第三方API发送HTTP请求来获取IP地址。常用的第三方API有ipify和ipapi。代码示例如下:
```
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.ipify.org', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var ip = xhr.responseText;
}
};
xhr.send();
```
阅读全文