Observe controlled HTTP behavior

Predict a result, run one allowlisted request, and connect the observation to the protocol rule. Every lesson remains readable without JavaScript or the Worker.

Read messages

Observe a bounded HTTP request

Compare a request's method, bounded content size, and safely normalized field values.

Observe: The response identifies the method and bounded request-content size received by the Worker.

Observe selected HTTP status codes

Observe how fixed success, client-error, and rate-limit statuses appear to a client.

Observe: Each allowlisted choice returns its fixed status and bounded representation.

Observe fixed response headers

Inspect how fixed response fields describe handling policy separately from response content.

Observe: The download preset carries a fixed attachment filename and text representation.

Follow request flow

Compare methods across redirects

Compare historical method rewriting with explicit method-preserving redirect semantics.

Observe: Fixed 301 and 302 paths can demonstrate permitted historical POST-to-GET behavior.

Follow a bounded redirect chain

Compare a selected bounded chain with the final URL reported after automatic following.

Observe: The selected chain follows fixed relative Location values to one controlled final target.

Observe a CORS preflight

Run a simple GET and a preflighted POST, then inspect the final response shared with JavaScript.

Observe: The safelisted request reaches the final response without an OPTIONS preflight.

Observe an HTTP QUERY request

Run a safe cross-origin QUERY request and inspect the final response shared with JavaScript.

Observe: The cross-origin QUERY reaches its final response after the browser handles the required OPTIONS exchange.

Observe a bounded cookie lifecycle

Observe cookie creation, request selection, and cleanup as separate browser steps.

Observe: A fixed Set-Cookie response creates one short-lived host-only cookie.

Understand reuse

Observe cache freshness

Observe the difference between a fresh stored response and one that requires another cache decision.

Observe: The fixed representation has an explicit short freshness lifetime.

Observe ETag revalidation

Observe how If-None-Match can validate a stored representation without retransmitting it.

Observe: An unconditional request returns a fixed representation and entity tag.

Observe compression negotiation

Use a generated wire-level request to observe coding selection without claiming a compressed transfer measurement.

Observe: The fixed response selects identity or gzip from the supported request preferences.

Compare timing

Observe fixed response delays

See how a controlled server delay contributes to, but does not fully determine, client-observed elapsed time.

Observe: Browser elapsed time is normally at least the selected fixed server delay.

Safety boundary

Controlled scenarios only

The Lab never accepts an arbitrary destination, credential, script, or unbounded body. Every published exercise uses fixed routes, allowlisted choices, bounded content, and a versioned response contract.