0

看这个例子 mobileconfig,我试图找出如果 DoH 服务器在响应 iOS 上的 DoH 查询时响应状态为 4xx 或 5xx 会发生什么。例如,如果 NGINX 损坏或出于任何原因,DoH 服务器会以 200 以外的任何状态响应。DNS 请求是否完全失败,我会在 Safari 中收到错误消息?iOS 设备会自动尝试另一个 DNS 吗?

4

1 回答 1

1

规范非常清楚,请参阅RFC 8484 “DNS Queries over HTTPS (DoH)”,第 4.2.1 节“处理 DNS 和 HTTP 错误”

具有不成功 HTTP 状态代码的 HTTP 响应不包含对 HTTP 请求中原始 DNS 问题的答复。DoH 客户端需要使用与其他 HTTP 客户端相同的非成功 HTTP 状态码语义处理。这可能意味着 DoH 客户端使用相同的 DoH 服务器重试查询,例如是否存在授权失败(HTTP 状态代码 401;参见 [RFC7235] 的第 3.1 节)。这也可能意味着 DoH 客户端使用不同的 DoH 服务器重试,例如针对不受支持的媒体类型(HTTP 状态代码 415;参见 [RFC7231] 的第 6.5.13 节),或者服务器无法生成适合客户端的表示(HTTP 状态码 406;参见 [RFC7231] 的第 6.5.6 节)等等。

那么确切的行为显然取决于所使用的客户端,但这意味着问题在这里并不是真正的主题,因为与编程无关。

于 2021-11-20T19:09:36.413 回答