Hollowport Lab / 301 Moved Permanently

h1-redirect-301

301 Moved Permanently

Responds 301 with a Location header pointing at a sibling path that itself returns 200 with a short known body. Two transactions on the wire: the redirect, then the followed request.

CLASS 2 — proves status / body / header semantics only. Does not prove origin transport, ALPN, or HTTP/2 multiplexing. This request terminates at a CDN edge, not at an origin server the Lab controls.

Run this test

Start your observer's capture, then open the test URL. Let the client follow the redirect to its destination.

https://hollowport.hevexa.net/lab/api/h1-redirect-301

What the server actually does

factvalue
status301
Location/lab/api/h1-redirect-301/dest
Content-Typetext/plain; charset=utf-8
Cache-Controlno-store
X-Lab-Testh1-redirect-301

Response body, verbatim:

Moved. Follow Location.

redirectKind: "permanent"
transactionsOnWire: 2

Then: the redirect destination

factvalue
path/lab/api/h1-redirect-301/dest
status200
Content-Typetext/plain; charset=utf-8
Cache-Controlno-store
X-Lab-Testh1-redirect-301
X-Lab-Noteredirect destination
You followed the redirect.
About intermediaries. This request also passes through Cloudflare's edge, which adds headers of its own — cf-ray, server: cloudflare, sometimes cf-cache-status. Those belong to the intermediary, not the origin. Seeing them in your observer's capture is expected; they are not a mismatch against the ground truth above. The Lab is teaching three separate things: what the authoritative server did, what your observer actually saw, and what an intermediary added or changed along the way.

Classify what your observer showed

For each fact above, pick the category that matches what your traffic tool actually displayed. This stays on your device — nothing is submitted.

Captured & represented — The observer got this right — captured, retained, and shown correctly.
Captured, not shown — The observer has the data but exposes no field or view for it.
Partial / lossy — Present but incomplete — e.g. a body kept only up to a cap, headers reconstructed rather than verbatim.
Not observed — Nothing in the observer's evidence corresponds to this.
Mismatch — The observer's value contradicts what the server actually did.
Unknown — Not enough visible in the observer to decide either way.

The ground truth above is what the server does, independent of any observer. If your tool showed less than this, that is a finding — not a problem with the test.