content negotiation
the mechanism by which client and server agree on which representation of a resource to use
When a resource has multiple representations, content negotiation picks one.
- proactive (server-driven): the client sends Accept, Accept-Language, Accept-Encoding preference lists with quality weights (q=); the server chooses and returns it, ideally with Vary so caches know what mattered.
- reactive (agent-driven): the server returns 300 Multiple Choices with a list and lets the client pick. Rare in practice.