WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null

临时接了个任务,客户要求某个账号只能在某个ip或者mac上登录,其余的情况的登录都要报错,首先就要解决看看怎么获取ip

使用的获取IP的语句如下,类似的在网上很多,主要的获取的逻辑都是一样的

    <script>
// 创建 RTCPeerConnection 对象
const peerConnection = new RTCPeerConnection();
// 添加一个空的数据通道
peerConnection.createDataChannel('dummy');
// 创建一个 ICE 候选对象
peerConnection.onicecandidate = (event) => {
if (event.candidate) {
// 提取 IP 地址信息
//const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/;
console.log("event.candidate.candidate :" + event.candidate.candidate);
//candidate:3088297775 1 udp 2113937151 4b52bd75-3d6f-4c7b-8bea-394c6d2a14d3.local 60294 typ host generation 0 ufrag mKXg network-cost 999
const ipAddress = ipRegex.exec(event.candidate.candidate)[1];
// 输出 IP 地址
console.log('IP 地址:', ipAddress);
// 关闭连接
peerConnection.close();
}
};
// 创建一个 SDP(Session Description Protocol)提议
peerConnection.createOffer().then((offer) => {
// 设置本地描述
return peerConnection.setLocalDescription(offer);
}).catch((error) => {
console.error('创建 Offer 失败:', error);
});
</script>

但是在edge和Chrome上执行的时候会报错,提示

Uncaught TypeError: Cannot read property '1' of null

因为说实话不是很熟悉前端,但是大概能猜到是null导致的

那么就去找是哪里null了

很快就发现,貌似那个正则并没有匹配到数据,所以要不是匹配的规则有问题,要不就是要匹配的内容有问题

很快发现,candidate的内容中并没有ip类型的数据,反而有一个.local

在网上查了一下,发现就是这部分的问题,原因是浏览器做了相应的设置,但是很难受,因为这种操作不适用我这种系统要给客户使用的情况,总不能每个人都要改设置才可以

只能另寻他路

PS:

可以使用这个网址进行查询

https://whois.pconline.com.cn/ipJson.jsp?callback=ipJson



https://api.ipify.org?format=jsonp&callback=getIP

但是我试了下,查出来的地址是准的,但是实际的ip有出入,建议自己多试试


参考:

https://blog.csdn.net/weixin_43915401/article/details/111830699

WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null的更多相关文章

  1. Uncaught TypeError: Cannot set property 'onclick' of null解决办法

    如果把js内容直接放在这个head标签以内,button按钮不能正常点击更换body的背景颜色,报错提示:demo6.html:16 Uncaught TypeError: Cannot set pr ...

  2. Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null

    在开发Ext 项目中如果遇到 Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null 这个错误,检查下renderT ...

  3. Uncaught TypeError: Cannot set property 'innerHTML' of null

    学习Chrome插件时,要在弹出页面中显示当前时间,结果怎样也显示不出来 看了 http://www.cnblogs.com/mfryf/p/3701801.html 这篇文章后感悟颇深 通过调试发现 ...

  4. Three.js three.js Uncaught TypeError: Cannot read property 'getExtension' of null

    在调试Three.js执行加载幕布的时候,突然爆出这个错误three.js Uncaught TypeError: Cannot read property 'getExtension' of nul ...

  5. JavaScript Uncaught TypeError: Cannot read property 'value' of null

    用 JavaScript 操作 DOM 时出现如下错误: Uncaught TypeError: Cannot set property 'value' of null Uncaught TypeEr ...

  6. 前台报错:Uncaught TypeError: Cannot read property '0' of null

    错误现象: var div1=mycss[0].style.backgroundColor;  //这一行提示360和chrome提示:Uncaught TypeError: Cannot read  ...

  7. 解决sweetalert 无故报错 elem.className.replace Uncaught TypeError: Cannot read property 'className' of null

    今天碰到这么一个问题,在使用sweetalert的时候时有时无会报错 elem.className.replace Uncaught TypeError: Cannot read property ' ...

  8. vue报错 Uncaught TypeError: Cannot read property ‘children ’ of null

    Uncaught TypeError: Cannot read property ‘children ’ of null ratings未渲染完毕,就跳走goods了,取消默认跳转,即可

  9. Uncaught TypeError: Cannot read property 'ownerDocument' of null

    /********************************************************************* * Uncaught TypeError: Cannot ...

  10. JavaScript中"Uncaught TypeError: Cannot set property 'innerHTML' of null"错误

    写了一个函数,在调用时出错:"Uncaught TypeError: Cannot set property 'innerHTML' of null" 代码如下: <!DOC ...

随机推荐

  1. 英语字母z解析.drawio

    英语字母z解析.drawio

  2. 从一线方案商的角度来看高通QCC3020芯片

    写在前面的话   QCC3020的推出已经有一段时间了.在蓝牙音频的圈子里,属于家喻户晓的芯片了.再加上高通的大力宣传和一些顶尖级产品的使用,可以说,它是高通在吸收CSR的技术之后,着力推出的最具竞争 ...

  3. epoll和ractor的粗浅理解

    我们继续上篇的文章继续更新我们的代码. 首先就是介绍一下epoll的三个函数. epoll_create epoll_ctl epoll_wait 如何去理解这3个函数,我是这样去理解这个函数, 就像 ...

  4. 记录--啊?Vue是有三种路由模式的?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 众所周知,vue路由模式常见的有 history 和 hash 模式,但其实还有一种方式-abstract模式(了解一哈~) 别急,本文我 ...

  5. 记录--通过手写,分析axios核心原理

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.axios简介 axios是什么? Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. ...

  6. Oracle ORA-09925

    Error : 30: Read-only file system 造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的,在系统重启之后,受损分区就会被Linux自动挂载为只读. 解决办法 ...

  7. 可视化学习:实现Canvas图片局部放大镜

    前言 最近我在可视化课程中学习了如何在Canvas中利用像素处理来实现滤镜效果,在这节课程的结尾留了一道局部放大镜的题目,提示我们用像素处理的方式去实现这个效果,最终实现随着鼠标移动将图片局部放大,本 ...

  8. OPC报文详解

    OPC (OLE for Process Control) 是一种工业通讯协议的标准,用于实现不同制造商的设备和系统之间的数据交换.它主要用于工业自动化系统中.OPC标准有几个不同的规范,包括OPC ...

  9. 性能测试思想(What is performance testing?)

    1.什么是性能测试 什么是软件性能? 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能是展示出来的及时性. 比如:一个登录功能他能实现登录操作,但是登录 ...

  10. 算法学习笔记【5】| ST表

    ST表 Part 1:ST表解决的问题是什么 ST 表可以用来解决RMQ(区间最值问题)等可重复贡献的问题. ST表基于倍增的思想来实现. Part 2:ST表的实现 ST表通过 O(nlog⁡n)& ...