您的位置:首页 > 教程笔记 > 前端笔记

如何用js获取ip地址

2024-06-22 12:25:33 前端笔记 126

如何用 JavaScript 获取 IP 地址

直接获取

WebRTC API

async function getIP() {
  const configuration = {
    iceServers: [
      {
        urls: ['stun:stun.l.google:19302']
      }
    ]
  };
  const peerConnection = new RTCPeerConnection(configuration);
  const iceCandidate = await new Promise((resolve) => {
    peerConnection.onicecandidate = (e) => {
      if (e.candidate && e.candidate.type === 'srflx') {
        resolve(e.candidate.address);
      }
    };
  });
  peerConnection.close();
  return iceCandidate;
}


navigator.mediaDevices.getUserMedia()

async function getIP() {
  const mediaStream = await navigator.mediaDevices.getUserMedia({ video: false, audio: false });
  const peerConnection = new RTCPeerConnection();
  const sender = peerConnection.addTrack(mediaStream.getTracks()[0], mediaStream);
  const iceCandidate = await new Promise((resolve) => {
    peerConnection.onicecandidate = (e) => {
      if (e.candidate && e.candidate.type === 'srflx') {
        resolve(e.candidate.address);
      }
    };
  });
  sender.stop();
  peerConnection.close();
  return iceCandidate;
}

通过服务器代理

使用 AJAX 或 fetch

向服务器发送请求,服务器响应中包含 IP 地址。

async function getIP() {
  const response = await fetch('/get-ip');
  const data = await response.json();
  return data.ip;
}

注意事项

WebRTC API 和 navigator.mediaDevices.getUserMedia() 只能在安全连接(HTTPS)上使用。
服务器代理方法需要后端支持。
获取到的 IP 地址可能是本地 IP 地址,而不是外部 IP 地址。

相关推荐

  • PHP 应用程序性能优化中 Web 服务器配置的调优

    PHP 应用程序性能优化中 Web 服务器配置的调优

    通过调优 web 服务器配置,可以优化 php 应用程序性能,具体方法包括:调整线程池大小,优化并发请求处理;设置 keepalive 超时,平衡延迟和资源消耗;设置连接限制,防止资源耗尽;启用 gz

    综合教程 2024-05-03 19:59:22 97
  • navicat能连接服务器的数据库吗

    navicat能连接服务器的数据库吗

    Navicat 能否连接服务器数据库?答案: 是详细说明:Navicat 是一个数据库管理工具,可以连接到各种数据库服务器,包括:MySQLMariaDBSQL ServerOraclePostgre

    综合教程 2024-04-24 20:11:21 129
  • navicat如何打开关闭的服务器

    navicat如何打开关闭的服务器

    如何打开关闭的服务器打开关闭的服务器要打开关闭的服务器,请按照以下步骤操作:关闭服务器要关闭服务器,请按照以下步骤操作:详细步骤:打开关闭的服务器关闭服务器

    综合教程 2024-04-24 20:10:17 62
  • C++ 函数常量引用参数传递的注意事项

    C++ 函数常量引用参数传递的注意事项

    常量引用参数传递可确保函数内参数不变性,有以下优势:参数不可变性:函数无法修改常量引用参数。提高效率:无需创建参数副本。错误检测:尝试修改常量引用参数会触发编译时错误。C++ 函数常量引用参数传递的注

    综合教程 2024-04-24 19:35:48 65
  • golang函数返回值的注意事项

    golang函数返回值的注意事项

    函数返回值类型须与签名相匹配。函数可返回多个值或不返回值,后者使用 () 表示。return 语句可提前结束函数并返回给定值。多个返回值使用 return 多个值返回。Go 语言函数返回值的注意事项在

    综合教程 2024-04-24 19:32:53 46