我想知道有没有办法在JavaScript中检测DNS查找错误。
是否有一些代码或一些技巧?
或者这是不可能的任务?
有人能说清楚这个吗?非常感谢!答案 0 :(得分:1)
当随机最终用户的计算机上出现“DNS查找失败”时,无法准确预测会发生什么行为。
例如,当在不存在的域(NXDOMAIN)上执行查找时,许多ISP返回自己的“帮助者”搜索页面/站点。这也称为DNS Hijacking。
用户还可以在本地“主机文件”上配置自己的域条目,这会产生“误报”。
对于更可靠的方法,您应该在服务器上执行此查找,这应该可以更好地指示域是否可以访问更广泛的世界。它还可以让您区分网站仅仅是用户的计算机停机或无法访问,而不是无效的条目。
答案 1 :(得分:0)
如果您的意思是 err_name_not_resolved,那只是因为没有连接或无法联系 dns 服务器。如果您使用的是 XHR,那么只需简单地为您的 xhr.onerror 分配一个函数:xhr.onerror = () => { alert('Failed DNS resolution'); };
请注意,该错误仍会出现在控制台中,这是有意为之的设计。如果 xhr.onload 也不是未定义的,它也应该仍然尝试运行,所以要记住这一点。
如果您的意思是找到一个页面但它不存在,那应该只返回 404。使用 xhr,您只需读取 if(xhr.status === 404) { ... }
。
如果您的意思是找到一个页面但获得了错误的 IP 地址,尝试通过 dns 劫持来尝试钓鱼网站,有几种方法可以解决这个问题。第一个是硬编码 IP 地址,第二个是证书,第三个是任何类型的隐藏代码,两台计算机都应该知道期望彼此验证什么。可能还有其他方法,这只是我的想法。