Visual RFC.
ALL RFCs / RFC 9110
Read the RFC ↗
RFC 9110 / REQUEST DECISIONS

Content negotiation

05

The caller can express preferences for media type, language, or coding; the server chooses a representation.

Related RFCs and changes

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

DIAGRAM§ 12 ↗
RFC 9110 · § 12EXAMPLE
4 / 4
Content negotiationAccept preferences select the JSON representation from a stack of variants, and Vary makes the selection inputs visible to a cache.Choose a useful representationIllustrative request and available variantsClient preferencesAccept: application/jsonHTMLtext/htmlJSONapplication/jsonTexttext/plainselectedVary: AcceptReturn JSON with Content-Type metadataReturn the chosen representation
04
Return the chosen representation.

The response metadata describes what actually arrived.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
WHAT CHANGED
RFC 7231 §5.3.3RFC 9110 §12.5.2

Accept-Charset is now deprecated. Appendix B.3 lists this change; senders should not use it as a modern charset-negotiation mechanism.

Read the updated RFC section ↗
KEY POINT

Negotiate a representation and describe the choice.

  • Accept, Accept-Language, and Accept-Encoding express client preferences; q values express relative weights.
  • Proactive negotiation selects before the response; reactive negotiation offers choices for a later request.
  • Vary identifies request fields that influenced selection so caches can distinguish variants.
DETAILS

Preferences do not guarantee a particular result. The server can sometimes disregard them or return a negotiation failure. Accept-Charset is deprecated.

Read the RFC section ↗

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

Privacy
All chapters in this RFC
  1. One meaning, many transports
  2. Targets, origins & intermediaries
  3. Fields, content & representations
  4. Methods & retry safety
  5. Content negotiation
  6. Validators & conditional requests
  7. Range requests
  8. Status codes & redirects
  9. Caches & revalidation
  10. Authentication, security & extensions
RFC 9700 / CHAPTERS

Chapters

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

RFC status and corrections ↗