HTTP · interactive
HTTP, one step at a time. Watch it work.
WebMacha teaches HTTP by running it in front of you. Each module takes one part of the protocol, plays it step by step, and explains every step with the rule from its RFC. Pick a scenario, press play, scrub back and forth, and change the setup to see what changes. Every setup you build is a link you can share.
Modules
-
Semantics RFC 9110
How a server decides on a response. Walk a request through the decision flow one question at a time and see which answer led to 200, 304 or 406. The same in every HTTP version.
-
HTTP/2 RFC 9113
How HTTP/2 carries requests: one connection, many streams, interleaved frames. Watch the frames cross one at a time, then cancel a stream or add a request.
Semantics scenarios
2xx · Success
3xx · Redirection
- 300 Multiple Choices More than one representation to choose from
- 301 Moved Permanently The resource has moved for good
- 303 See Other A form post that sends you onward
- 304 Not Modified Revalidating a cached copy by ETag
- 304 Not Modified Revalidating a cached copy by date
- 307 Temporary Redirect The resource is away for now
- 308 Permanent Redirect Moved for good, and the POST keeps its method
4xx · Client errors
- 400 Bad Request A request the resource calls malformed
- 401 Unauthorized No credentials: who are you?
- 403 Forbidden I know who you are, and no
- 404 Not Found Asking for something that isn't there
- 405 Method Not Allowed A method this resource doesn't allow
- 406 Not Acceptable Asking for XML it can't produce
- 409 Conflict A PUT that clashes with the current state
- 410 Gone Something that isn't coming back
- 412 Precondition Failed Updating with a stale ETag
- 413 Content Too Large Uploading more than the resource accepts
- 414 URI Too Long A URI longer than the resource allows
- 415 Unsupported Media Type Sending XML the resource won't accept
- 428 Precondition Required A PUT that doesn't say which version it changes
5xx · Server errors
Classic vs modern HTTP
Where the diagram comes from
The Semantics module's flowchart is adapted from version 3 of Webmachine's decision diagram, with thanks to its authors.
It predates the current HTTP specification. WebMacha shows modern HTTP (RFC 9110) by default. Switch the rules to Classic to see what the original diagram did.
HTTP/2 scenarios
- prefacelifecycle One request, start to finish
- multiplexingtriggers A page and its subresources
- head-of-linedelay A slow app.js holds nothing up
- 304HEAD Two ways to skip a body
- SETTINGSlimits Too many at once
- RST_STREAMintervention Cancelling a download
- request bodyopen A POST with a body
- early responsehalf-closedNO_ERROR The server answers before the upload ends
- flow controlbandwidth-delay A narrow window starves a fast pipe
- flow controlWINDOW_UPDATE The same download, with the window out of the way