Visual RFC.
ALL RFCs / RFC 9211
Read the RFC ↗
RFC 9211 / HTTP CACHE-STATUS

Explain why a request went forward

03

Different failed selections and request rules lead to distinct fwd reason tokens.

RFC 9211 · § 2.2EXAMPLE
4 / 4
Explain why a request went forwardFour separate request cases distinguish no matching URI, same URI but Vary mismatch, fresh selection validated because this cache honors advisory request no-cache and partial coverage with an actual100byte gap. Each illustrates the specific reason for forwarding and reports fwd token on eventual response, not an HTTP error or proof the origin was reached.Different reasons for going forwardThis cacheNext hopRequested: bytes 0–199 · stored: 0–99stored 100 bytesmissing 100 bytesincomplete coverage → forwardEdgeCache; fwd=partialReport on resulting response · separate request case
04
Forward when stored ranges cannot cover the request.

Separate range example requests bytes0–199 while the cache only has0–99. The actual strip shows the100-byte gap, so it reports fwd=partial rather than a URI miss.

Source for this drawing: RFC 9211 · Read RFC section 2.2 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A request starts a conversation.

A client asks for a resource. A server sends a response. The method, address, headers, and status explain what that conversation means.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

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

KEY POINT

Report the most specific forwarding reason the cache knows.

  • fwd is a Token saying why a request went toward the origin, possibly only as far as another cache. The most specific known reason SHOULD be used to the extent implementable.
  • uri-miss means no stored response matched the URI. vary-miss means the URI matched but stored Vary and request-header values prevented selecting a response. miss is the less specific fallback when those cannot be distinguished.
  • request means a fresh response was selectable, but request semantics prevented using it. stale means a selectable response was stale. partial means the selected partial response lacked requested ranges or the request needed the full response.
  • bypass means the cache was configured not to handle this request. method means request-method semantics required forwarding. These are different from a missing cached URI.
  • A failure to select a reusable response is not an HTTP error by itself. The forwarded request can still receive an ordinary successful response. The reason describes this cache, not a guaranteed origin visit.
DETAILS

Each state is a separate request case, not a sequence of changing causes for one request. Under RFC 9111 §§5.2.1/5.2.1.4, request no-cache is advisory; this example cache chooses to honor it. The header is a report on the resulting response; the picture focuses on the forwarding trigger.

Read the RFC section ↗

All chapters in RFC 9211

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

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

RFC status and corrections ↗