Visual RFC.
ALL RFCs / RFC 8484
Read the RFC ↗
RFC 8484 / PROTOCOL MECHANISMS

Send DNS using GET or POST

02

GET encodes a DNS wire message in a base64url query variable; POST carries the binary message in the body.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 4.1 ↗
RFC 8484 · § 4.1EXAMPLE
3 / 3
Send DNS using GET or POSTGET encodes a DNS wire message in a base64url query variable; POST carries the binary message in the body.DNS wire queryGET?dns=base64urlPOSTbinary DNS bodyapplication/dns-messageTwo HTTP mappings; not a JSON DNS API
03
Send the HTTPS request with the appropriate media-type handling.

Send the HTTPS request with the appropriate media-type handling.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

DoH servers must implement both GET and POST.

  • DoH servers must implement both GET and POST.
  • The media type is application/dns-message; this RFC is not a JSON DNS API.
DETAILS

The drawing is a simplified worked example. Follow the linked RFC and its updates for implementation requirements.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. Choose the HTTPS resolver endpoint
  2. Send DNS using GET or POST
  3. Read HTTP and DNS errors separately
  4. Respect DNS TTL and HTTP cache age
  5. Understand who can still observe queries
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗