Accept-Encoding
Accept-Encoding lets the client constrain which content codings are acceptable in the response — it can sometimes elicit 406 vs 404, but only in narrow conditions.
Technique Definition
Accept-Encoding lets the client constrain which content codings are acceptable in the response. Under Existence Oracle analysis, it can sometimes elicit 406 vs 404, but only when the request makes every viable coding unacceptable and the server refuses fallback.
Primary Headers / Methods
Request Header
Accept-Encoding
Representation Dimension It Relies On
- Content coding
Primary Method Context
GETHEAD
Secondary Method Context
- Any method whose response content is subject to content-coding negotiation
Can Elicit
Primary Differential
406 vs 404in a narrow branch where no acceptable coding remains
Secondary / Adjacent Outcomes
200 vs 404if the server sends the response without content coding200 vs 404if the server ignores the header or chooses an acceptable coding
Stage Role
Under this taxonomy, Accept-Encoding is a tertiary trigger for the 406 vs 404 differential.
Best Use
Accept-Encoding is best used only when the target is known to negotiate content codings and the probe explicitly closes off identity fallback.
The cleanest probing form is a request that makes all relevant codings unacceptable, including identity.
Examples:
Accept-Encoding: gzip;q=0, br;q=0, identity;q=0Accept-Encoding: *;q=0, identity;q=0
These are useful only if the server actually honors the field and actually needs a coding choice to answer.
Why It Works as an Existence Trigger
A 406 response means the server treated the target as a resource with candidate response representations, considered their content codings, found no acceptable coding under the received Accept-Encoding field, and declined fallback. A nonexistent target can terminate earlier at 404.
Method Applicability
GET
- Primary method context.
- Cleanest setting for response coding negotiation.
HEAD
- Also primary.
- Useful when coding-related response semantics are still visible in headers.
Other Methods
- Valid in principle where the response body is still negotiable.
- Rarely the clearest oracle setting.
Trigger Strength / Normative Level
Weak Normative Core
RFC 9110 clearly includes Accept-Encoding in proactive negotiation, but it also leaves room for the server to send a response without content coding when that remains acceptable.
Practical Result
This technique is structurally valid but weak as a canonical oracle trigger. In many cases it collapses to success rather than 406.
Portability Notes
- The probe fails if
identityremains acceptable. - The probe is weak against endpoints that never compress that representation in the first place.
- Intermediary decompression or recompression can blur the signal in deployment, though that belongs to Stage 3 analysis.
- This is not a strong first-choice elicitation technique.
Detection Notes
- Establish a known-existing target and a known-nonexistent target.
- Send the same request to both.
- Add only one manipulator: an
Accept-Encodingvalue that makes every relevant coding unacceptable, includingidentity. - Compare outcomes.
- A
406on the existing target and404on the nonexistent target confirms a coding-based existence trigger.
Relationship to Other Techniques
Versus Accept
Acceptis the clean canonical trigger.Accept-Encodingis much easier for a server to defeat via identity fallback.
Versus Accept-Language
Accept-Languagevaries meaning.Accept-Encodingvaries wire-level coding.- Both can elicit
406, butAccept-Encodingis often the weaker probe.
Scope & Limitations
- It does not prove that the resource has multiple semantic representations.
- It does not prove that compression is normally used.
- It does not prove anything about cache state or intermediary behavior.
- It only proves that content-coding negotiation reached an existing target and failed strictly enough to yield
406.
Accept-Language
Accept-Language lets the client express preferred natural languages for the response — it can elicit 406 vs 404 when the server honors language negotiation strictly.
Accept-Charset
Accept-Charset lets the client express which character encodings are acceptable in a textual response — structurally valid but weak, deprecated in RFC 9110.