如何通过 HTTP 使用 URI DNS 记录?

1 networking

我正在尝试将 URI 记录与 HTTP https://en.wikipedia.org/wiki/URI_record一起使用

在 Cloudflare 上,我输入subNamehttps://example.com/page/Content如果我去https://sub.example.net它说curl: (6) Could not resolve host: sub.example.net

Esa*_*nen 7

目的

RFC 7553记录的目的URI不是取代HTTP重定向,而是补充S-NAPTR(5.2)、取代U-NAPTR(5.3)和取代SRV5.4)记录类型。我认为第 2 节最好地表达了预期目的:

一般来说,预计 URI 记录将由客户端用于已知要使用的相关协议的应用程序,但是,例如,需要额外的抽象来将域名与服务点分开(如由 URI 寻址)。这种情况的一个例子是,一个组织拥有多个域名,但只有一个官方网页。

就像记录一样SRV,这要求应用程序设计为使用URI记录来查找此信息。Web 浏览器不跟踪 URI 记录,甚至不会尝试解析它们。HTTP 协议根本不使用URI记录,并且 Web 浏览器遵循该协议。

用法

正如迈克尔·汉普顿在评论中提到的那样,我从未见过使用URI记录的服务、协议或应用程序。例如,关于 SRV 记录的维基百科文章有“使用”部分,列出了一些利用SRV资源记录类型的协议,但截至 2020 年 7 月,关于记录的文章URI甚至没有类似的部分。没有人使用此记录类型。

语法

2 节继续:

应用程序需要知道主机名前面的特定服务。

第 5.1 节给出了一个例子:

一个组织拥有域名example.comexample.net,其 FTP 存档位于ftp://ftp1.example.com/public。给定服务名称ftp和传输协议tcp(来自 IANA“服务名称和传输协议端口号注册表”),可以在相应区域(example.com 和 example.net)中提供以下 URI 资源记录:

$ORIGIN example.com.
_ftp._tcp    IN URI 10 1 "ftp://ftp1.example.com/public"

$ORIGIN example.net.
_ftp._tcp    IN URI 10 1 "ftp://ftp1.example.com/public"
Run Code Online (Sandbox Code Playgroud)

让我们想象一下Web 浏览器已采用 RFC 7553URI记录。在这种情况下,URIHTTP 服务的记录sub.example.net将位于_http._tcp.sub.example.net

_http._tcp.sub.example.net. IN URI 10 1 "https://example.com/page/"
Run Code Online (Sandbox Code Playgroud)

由于语法错误,您配置的内容将无法按预期工作。

如何实现您想要的功能

一般来说,您需要在sub.example.net回复上创建一个 HTTP/HTTPS 服务,其中包含301 Moved Permanently( RFC 7231, 6.4.2 ) 或302 Found( 6.4.3 ) 和Location( 7.1.2 ) https://example.com/page/简而言之,HTTP重定向

借助 Cloudflare,可以使用Cloudflare 页面规则配置 HTTP 重定向。