If-None-Match
If-None-Match makes a request conditional on the recipient not finding a current representation whose entity tag matches the supplied validator.
Technique Definition
If-None-Match makes a request conditional on the recipient not finding a current representation whose entity tag matches the supplied validator. Under Existence Oracle analysis, it is the cleanest validator-based trigger for forcing the server to reveal whether a current representation exists and was evaluated.
Primary Headers / Methods
Request Header
If-None-Match
Representation Metadata It Relies On
ETag
Primary Method Context
GETHEAD
Secondary Method Context
- Methods other than
GETandHEADcan still useIf-None-Match, but a false condition leads to412 Precondition Failedrather than304 Not Modified.
Can Elicit
Primary Differential
304 vs 404
Secondary / Adjacent Outcomes
412 vs 404on non-GET/ non-HEADmethods when the condition evaluates false200 vs 404when a supplied entity tag does not match an existing representation
Stage Role
Under this taxonomy, If-None-Match is primarily the canonical trigger for 304 vs 404.
Best Use
If-None-Match is the cleanest technique when the goal is to ask, in RFC-defined terms, whether any current representation exists without requesting the full representation body.
The strongest canonical form is:
If-None-Match: *
That form is especially useful because it turns the technique into an existence-oriented validator probe rather than a version-specific validator probe.
Why It Works as an Existence Trigger
For GET and HEAD, a false If-None-Match condition yields 304 Not Modified, which only makes sense after the server has identified and evaluated a current representation. A nonexistent target does not reach that representation-evaluation outcome and instead bottoms out at 404 Not Found.
Method Applicability
GET
- Primary method for this technique.
- Cleanest path to
304 vs 404.
HEAD
- Also primary.
- Same validator logic, but without transferring a response body.
- Important to document explicitly because the technique is still valid even when response-body differences are unavailable.
Other Methods
- Valid at the protocol level, but no longer the cleanest cache-probing-style use case.
- A false condition produces
412, which makes this branch overlap with broader precondition analysis rather than pure validator retrieval.
Trigger Strength / Normative Level
Strong Normative Core
When the If-None-Match condition evaluates false, the RFC-defined response path is strong and explicit:
304 Not ModifiedforGETorHEAD412 Precondition Failedfor other methods
Practical Result
This gives If-None-Match a strong normative basis as an elicitation technique because the response code is not merely conventional; it follows directly from the conditional-request rules.
Portability Notes
- Best portability comes from
GET/HEADplusIf-None-Match: *. - Using a fabricated specific ETag is weaker for oracle purposes because a non-match against an existing resource usually yields
200, not304. If-None-Matchtakes precedence overIf-Modified-Sincewhen both are present, so this technique should usually be tested in isolation.- This technique proves representation evaluation, not that any intermediary cache stored or served the response.
Detection Notes
- Establish a known-existing target and a known-nonexistent target.
- Send the same
GETorHEADrequest to both. - Add only one manipulator:
If-None-Match: *. - Compare outcomes.
- A
304on the existing target and404on the nonexistent target is the cleanest oracle confirmation for this technique.
Scope & Limitations
- It does not by itself prove that a shared cache is present.
- It does not prove that a prior response was stored.
- It does not prove anything about freshness lifetime, cache keying, or cache hits.
- It only proves that RFC-defined conditional evaluation reached an existing current representation.
Validator Elicitation
Validator elicitation techniques use conditional request headers to force the server into representation evaluation paths that diverge based on target existence.
If-Modified-Since
If-Modified-Since makes a GET or HEAD request conditional on the selected representation having been modified more recently than the date supplied in the field value.