WebRTC获取IP地址问题,Uncaught TypeError: Cannot read property '1' of null
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的更多相关文章
- Uncaught TypeError: Cannot set property 'onclick' of null解决办法
如果把js内容直接放在这个head标签以内,button按钮不能正常点击更换body的背景颜色,报错提示:demo6.html:16 Uncaught TypeError: Cannot set pr ...
- Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null
在开发Ext 项目中如果遇到 Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null 这个错误,检查下renderT ...
- Uncaught TypeError: Cannot set property 'innerHTML' of null
学习Chrome插件时,要在弹出页面中显示当前时间,结果怎样也显示不出来 看了 http://www.cnblogs.com/mfryf/p/3701801.html 这篇文章后感悟颇深 通过调试发现 ...
- Three.js three.js Uncaught TypeError: Cannot read property 'getExtension' of null
在调试Three.js执行加载幕布的时候,突然爆出这个错误three.js Uncaught TypeError: Cannot read property 'getExtension' of nul ...
- JavaScript Uncaught TypeError: Cannot read property 'value' of null
用 JavaScript 操作 DOM 时出现如下错误: Uncaught TypeError: Cannot set property 'value' of null Uncaught TypeEr ...
- 前台报错:Uncaught TypeError: Cannot read property '0' of null
错误现象: var div1=mycss[0].style.backgroundColor; //这一行提示360和chrome提示:Uncaught TypeError: Cannot read ...
- 解决sweetalert 无故报错 elem.className.replace Uncaught TypeError: Cannot read property 'className' of null
今天碰到这么一个问题,在使用sweetalert的时候时有时无会报错 elem.className.replace Uncaught TypeError: Cannot read property ' ...
- vue报错 Uncaught TypeError: Cannot read property ‘children ’ of null
Uncaught TypeError: Cannot read property ‘children ’ of null ratings未渲染完毕,就跳走goods了,取消默认跳转,即可
- Uncaught TypeError: Cannot read property 'ownerDocument' of null
/********************************************************************* * Uncaught TypeError: Cannot ...
- JavaScript中"Uncaught TypeError: Cannot set property 'innerHTML' of null"错误
写了一个函数,在调用时出错:"Uncaught TypeError: Cannot set property 'innerHTML' of null" 代码如下: <!DOC ...
随机推荐
- PAT 甲级【1011 World Cup Betting】
import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; public ...
- 求正整数 n 的所有正因数的个数,qq 次询问。
https://ac.nowcoder.com/acm/contest/22769/A 链接:https://ac.nowcoder.com/acm/contest/22769/A来源:牛客网 时间限 ...
- sed第三天
sed第三天 利用sed 取出ifconfIg ens33命令中本机的IPv4地址 可以百度扩展 了解即可 也可以用别的命令实现 只要有结果也可以 ifconfig ens33 | sed -n 's ...
- DialogFragment源码分析
目录介绍 1.最简单的使用方法 1.1 官方建议 1.2 最简单的使用方法 1.3 DialogFragment做屏幕适配 2.源码分析 2.1 DialogFragment继承Fragment 2. ...
- hdfs开启回收站(废纸篓)
1.背景 我们知道,在mac系统上删除文件,一般情况下是可以进入 废纸篓里的,如果此时我们误删除了,还可以从 废纸篓中恢复过来.那么在hdfs中是否存在类似mac上的废纸篓这个功能呢?答案是存在的. ...
- 任何样式,javascript都可以操作,让你所向披靡
前言 习惯了在 css 文件里面编写样式,其实JavaScript 的 CSS对象模型也提供了强大的样式操作能力, 那就随文章一起看看,有多少能力是你不知道的吧. 样式来源 客从八方来, 样式呢, 样 ...
- C#通过文件头判断flv文件
代码如下: private void button1_Click(object sender, EventArgs e) { string path = Application.StartupPath ...
- cadence板图设计基本操作
基于cadence的四位全加器设计及仿真. 1.实验原理 板图,也就是芯片的原理图.通过学习板图的绘制,可以有效地提高对芯片的工作原理的认识.在版图设计中,需要掌握许多的规则,能够按照特定的规范优化, ...
- Python正则表达式提取方法
- JavaScript二代公民身份证号验证
身份证号码中的校验码是身份证号码的最后一位,是根据[中华人民共和国国家标准GB 11643-1999]中有关公民身份号码的规定, 根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本 ...