1.1.1.1へのAPIリクエストを作成する
Cloudflareは次のDNS over HTTPSリゾルバを提供しています:
https://cloudflare-dns.com/dns-queryCloudflareのDNS-over-HTTPS(DOH)エンドポイントは、DNSワイヤフォーマットに対してPOSTおよびGETを、JSONフォーマットに対してGETをサポートしています。
POSTを使用してリクエストを行う場合、DNSクエリはHTTPリクエストのメッセージボディに含まれ、MIMEタイプ(application/dns-message)はContent-Typeリクエストヘッダーに送信されます。Cloudflareはクライアントによって送信されたHTTPリクエストのメッセージボディを使用するため、メッセージボディはエンコードしないでください。
GETを使用してリクエストを行う場合、DNSクエリはURLにエンコードされます。
JSONフォーマットを使用する場合はapplication/dns-jsonを設定し、DNSワイヤフォーマットを使用する場合はapplication/dns-messageを使用します。
cURLの例については、DNSワイヤフォーマットおよびJSONを参照してください。
リクエストを行う際に複数の質問を送信することは、使用されるHTTPバージョンに依存します。各DNSクエリは正確に1つのHTTPリクエストにマッピングされます。HTTP/2およびHTTP/3はマルチプレクシングをサポートしており、複数のリクエストを同時に開始できます。実際、HTTP/2はDNS over HTTPS(DoH)で使用するための最小推奨HTTPバージョンです。これは1.1.1.1に特有のものではなく、DoHの動作方法に関するものです。
DoHの動作についてはRFC 8484で詳しく学ぶことができ、特にHTTPレイヤーの要件 ↗を参照してください。
リクエストの例:
curl --http2 --header "accept: application/dns-json" "https://1.1.1.1/dns-query?name=cloudflare.com" --next --http2 --header "accept: application/dns-json" "https://1.1.1.1/dns-query?name=example.com"このAPIにリクエストを送信するために認証は必要ありません。
CloudflareのDNS over HTTPSリゾルバはTLS 1.2およびTLS 1.3をサポートしています。
| HTTPステータス | 意味 |
|---|---|
400 | DNSクエリが指定されていないか、サイズが小さすぎます。 |
413 | DNSクエリが最大許容DNSメッセージサイズを超えています。 |
415 | サポートされていないコンテンツタイプです。 |
504 | クエリ応答を待っている間にリゾルバがタイムアウトしました。 |