The “core” semantics of the HTTP protocol are defined by this specification:
Those semantics are expressed “on the wire” in two different ways:
HTTP/2 also uses:
These HTTP functions are optional to implement, but widely used:
These RFCs collectively obsolete all preceding RFCs defining HTTP, including RFC1945, RFC2068, RFC2616 and RFC2617.
The core specifications are currently under revision. If you find issues, please bring them up there!
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:
Individual headers have their own registries that regulate permissible values, including:
This is a partial list of HTTP-relevant specifications, here for convenience. For the complete list of HTTP extensions, see the relevant registry.