đź“„ HTTP Documentation (original) (raw)
Core Specifications
The “core” semantics of the HTTP protocol are defined by:
- RFC 9110: HTTP Semantics
- RFC 9111: HTTP Caching
Those semantics are expressed “on the wire” in three ways:
Later versions of HTTP offer field compression:
- RFC 7541: HPACK Header Compression for HTTP/2
- RFC 9204: QPACK Field Compression for HTTP/3
These RFCs collectively obsolete all preceding RFCs defining HTTP, including RFC 1945, RFC 2068, RFC 2616, RFC 2617, RFC 7230-5, and RFC 7540.
Also relevant is the Structured Field Values specification, which is used in a growing number of headers and trailers:
- RFC 9651: Structured Field Values for HTTP (test suite)
Protocols built “on top” of HTTP should follow Best Current Practice, as documented here:
- RFC 9205: Building Protocols with HTTP
Extension Registries
There are a large number of HTTP extensions, including methods, status codes and headers. It’s important to note that they are all “part of” HTTP, as long as they’re listed in the appropriate registries:
- HTTP Method Registry - more info
- HTTP Status Code Registry - more info
- HTTP Field Name Registry - more info
- HTTP/2 Parameters - Frame types, settings, error codes
- HTTP/3 Parameters - Frame types, settings, error codes
Individual headers have their own registries that regulate permissible values, including:
- HTTP Authentication Scheme Registry - more info
- HTTP Cache Directive Registry - more info
- HTTP Parameters - Content-codings, transfer-codings, Forwarded, Prefer, and Range-related headers