专栏名称: 前端早读课
我们关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,四万+同行相伴成长。
目录
相关文章推荐
前端早读课  ·  【早阅】CF-DOH:通过JavaScrip ... ·  2 天前  
前端早读课  ·  【第3390期】如何在用户界面中管理危险操作 ·  4 天前  
奇舞精选  ·  React 中的接口隔离原则 ·  5 天前  
奇舞精选  ·  React 中的接口隔离原则 ·  5 天前  
前端大全  ·  这个 JavaScript API ... ·  1 周前  
前端早读课  ·  【第3387期】多种前端框架SSR性能大比拼 ·  1 周前  
51好读  ›  专栏  ›  前端早读课

【早阅】CF-DOH:通过JavaScript查找DNS记录

前端早读课  · 公众号  · 前端  · 2024-10-13 08:00

正文

作者:@Jesse Ditson
原文:https://dev.to/jesseditson/cf-doh-look-up-dns-records-from-your-frontend-javascript-418k

背景

最近,Jesse Ditson 在开发 Archival Pro 时,遇到了需要检查域名 DNS 记录的需求。Archival Pro 允许用户将自定义域名指向 Archival 站点,为了启用这些站点的 HTTPS,他们使用基于 TXT 记录的域名验证器来验证所有权,然后再颁发 SSL 证书。为了简化这一过程,Jesse 需要查询 DNS 记录,以检查 CNAME 和 TXT 记录是否配置正确,并在配置不正确时显示一些有用的提示信息。

【活动】2024川渝Web 前端开发技术交流会「互联」,开始报名啦

要点

Jesse Ditson 开发了一个名为 cf-doh 的 JavaScript 库,该库允许在前端 JavaScript 中通过 DNS-over-HTTPS(DoH)查询 DNS 记录。这个库特别适用于在 Cloudflare Workers 等环境中运行,因为这些环境没有直接访问操作系统 DNS 系统的权限。

cf-doh:https://github.com/jesseditson/cf-doh

分析

在传统的 Node.js 或 C 语言环境中,查询 DNS 记录相对简单,因为操作系统提供了本地 DNS 缓存和查找工具。然而,在 Cloudflare Workers 中,由于运行环境是一个 v8 隔离环境,无法直接访问操作系统的 DNS 系统。即使启用了 nodejs_compat,Node.js 的 DNS 库也只能返回一个空对象。

为了解决这个问题,Jesse 选择了使用 DNS-over-HTTPS(DoH),这是一种现代的 DNS 查询方式,通过 HTTPS 协议进行 DNS 查询,从而提高了安全性和隐私性。Cloudflare 提供了一个 DNS-over-HTTPS 的解决方案,但现有的 npm 库并不完全符合 Jesse 的需求。因此,他开发了 cf-doh 库,该库抽象了 DNS 查询服务器,并提供了类似于 Node.js DNS 库的 API。

cf-doh 库的主要特点包括:

  • 简单易用:提供了类似于 Node.js DNS 库的 API,使得查询 DNS 记录变得非常简单。

  • 类型安全:提供了完整的类型定义,确保在使用 TypeScript 时类型安全。

  • 错误处理:将 HTTP 错误和状态响应转换为异常,简化了错误处理。

  • 跨平台:支持在浏览器、Cloudflare Workers 以及 Node.js 环境中运行。

 import { queryDNS } from "cf-doh";

const records = await queryDNS("_verification.jesseditson.com", "TXT");

records.forEach((r) => console.log(r));

影响

cf-doh 库的发布对前端开发者来说是一个重要的工具,特别是在需要在前端进行 DNS 查询的场景中。它不仅简化了 DNS 查询的过程,还提高了查询的安全性和隐私性。此外,该库的跨平台支持使得开发者可以在不同的环境中使用相同的 API,减少了开发和维护的复杂性。

结论

Jesse Ditson 开发的 cf-doh 库为前端开发者提供了一个强大且易用的工具,用于通过 DNS-over-HTTPS 查询 DNS 记录。随着越来越多的应用需要在前端进行 DNS 查询,cf-doh 库有望成为前端开发者的首选工具之一。未来,随着 DNS-over-HTTPS 的普及,类似的工具将会越来越受欢迎,而 cf-doh 库已经走在了前列。

AI 阅:了解技术资讯的一种方式。