CINXE.COM
📄 HTTP Documentation
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>📄 HTTP Documentation</title> <meta property="og:type" content="website"> <meta property="og:title" content="📄 HTTP Documentation"> <meta property="og:description" content="A convenient listing of relevant RFCs and registries, from the IETF HTTP Working Group"> <meta property="og:url" content="https://httpwg.org/specs/"> <meta property="og:site_name" content="IETF HTTP Working Group"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="/assets/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="/assets/site.css" rel="stylesheet"> <link rel="shortcut icon" type="image/x-icon" href="/assets/favicon/favicon.ico"> <link rel="apple-touch-icon" sizes="57x57" href="/assets/favicon/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/assets/favicon/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/assets/favicon/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/assets/favicon/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/assets/favicon/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/assets/favicon/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/assets/favicon/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/assets/favicon/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png"> </head> <body> <nav class="navbar navbar-dark bg-dark d-print-none navbar-expand-lg fixed-top ps-3 pe-3" role="navigation"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="navbarToggler" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="https://httpwg.org/"><img src="https://httpwg.org/assets/http.svg" height="23" /></a> </div> <div class="collapse navbar-collapse" id="navbar-collapse"> <div class="navbar-nav me-auto"> <a class="nav-item ms-1 text-white" href="https://httpwg.org/specs/">📄 Documentation</a> <div class="dropdown ms-4"> <a href="#" class="nav-item dropdown-toggle text-white" data-bs-toggle="dropdown">Work in Progress</a> <ul class="dropdown-menu"> <li class="dropdown-item"><a href="https://httpwg.org/http-extensions/">HTTP Extensions</a></li> <li class="dropdown-item"><a href="https://github.com/httpwg/admin/issues?q=is%3Aissue+is%3Aopen+label%3Aadoption">Future Work</a></li> </ul> </div> <div class="dropdown ms-4"> <a href="#" class="nav-item dropdown-toggle text-white" data-bs-toggle="dropdown">Participate</a> <ul class="dropdown-menu"> <li class="dropdown-item"><a href="https://httpwg.org/about/">About the HTTP Working Group</a></li> <li class="divider"></li> <li class="dropdown-item"><a href="https://httpwg.org/CONTRIBUTING.html">Contribution Policy</a></li> <li class="dropdown-item"><a href="http://datatracker.ietf.org/wg/httpbis/charter/">WG Charter</a></li> <li class="dropdown-item"><a href="http://lists.w3.org/Archives/Public/ietf-http-wg/">Group Mailing List 📨</a></li> <li class="dropdown-item"><a href="https://httpwg.org/wg-materials/">Meeting Materials</a></li> <li class="dropdown-item"><a href="https://httpwg.org/admin/editors/">Document Editor Resources</a></li> </ul> </div> </div> </div> </nav> <div class="container"> <div class="p-5 mb-4 bg-light rounded-3"> <h1 class="display-3">📄 HTTP Documentation</h1> <span class="lead"><p>HTTP is defined by these <a href="https://ietf.org/">IETF</a> <strong>RFCs</strong> and <a href="https://www.iana.org/">IANA</a> <strong>registries</strong>.</p> </span> </div> <div class="row"> <div class="col-md-7" id="col1"> <h2 id="core-specifications">Core Specifications</h2> <p>The “core” semantics of the HTTP protocol are defined by:</p> <ul> <li>RFC 9110: <a href="/specs/rfc9110.html">HTTP Semantics</a></li> <li>RFC 9111: <a href="/specs/rfc9111.html">HTTP Caching</a></li> </ul> <p>Those semantics are expressed “on the wire” in three ways:</p> <ul> <li>RFC 9112: <a href="/specs/rfc9112.html">HTTP/1.1</a></li> <li>RFC 9113: <a href="/specs/rfc9113.html">HTTP/2</a></li> <li>RFC 9114: <a href="/specs/rfc9114.html">HTTP/3</a></li> </ul> <p>Later versions of HTTP offer field compression:</p> <ul> <li>RFC 7541: <a href="/specs/rfc7541.html">HPACK Header Compression for HTTP/2</a></li> <li>RFC 9204: <a href="/specs/rfc9204.html">QPACK Field Compression for HTTP/3</a></li> </ul> <p>These RFCs collectively obsolete all preceding RFCs defining HTTP, including <strong>RFC 1945</strong>, <strong>RFC 2068</strong>, <strong>RFC 2616</strong>, <strong>RFC 2617</strong>, <strong>RFC 7230-5</strong>, and <strong>RFC 7540</strong>.</p> <p>Also relevant is the Structured Field Values specification, which is used in a growing number of headers and trailers:</p> <ul> <li>RFC 9651: <a href="/specs/rfc9651.html">Structured Field Values for HTTP</a> (<a href="https://github.com/httpwg/structured-field-tests">test suite</a>)</li> </ul> <p>Protocols built “on top” of HTTP should follow Best Current Practice, as documented here:</p> <ul> <li>RFC 9205: <a href="/specs/rfc9205.html">Building Protocols with HTTP</a></li> </ul> <h2 id="extension-registries">Extension Registries</h2> <p>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:</p> <ul> <li><a href="http://www.iana.org/assignments/http-methods/">HTTP Method Registry</a> - <em><a href="/specs/rfc9110.html#method.registry">more info</a></em></li> <li><a href="http://www.iana.org/assignments/http-status-codes/">HTTP Status Code Registry</a> - <em><a href="/specs/rfc9110.html#status.code.registry">more info</a></em></li> <li><a href="https://www.iana.org/assignments/http-fields/">HTTP Field Name Registry</a> - <em><a href="/specs/rfc9110.html#fields.registry">more info</a></em></li> <li><a href="http://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml">HTTP/2 Parameters</a> - <em>Frame types, settings, error codes</em></li> <li><a href="http://www.iana.org/assignments/http3-parameters/http3-parameters.xhtml">HTTP/3 Parameters</a> - <em>Frame types, settings, error codes</em></li> </ul> <p>Individual headers have their own registries that regulate permissible values, including:</p> <ul> <li><a href="http://www.iana.org/assignments/http-authschemes/">HTTP Authentication Scheme Registry</a> - <em><a href="/specs/rfc9110.html#auth.scheme.registry">more info</a></em></li> <li><a href="http://www.iana.org/assignments/http-cache-directives/">HTTP Cache Directive Registry</a> - <em><a href="/specs/rfc9111.html#cache.directive.registry">more info</a></em></li> <li><a href="http://www.iana.org/assignments/http-parameters/">HTTP Parameters</a> - <em>Content-codings, transfer-codings, Forwarded, Prefer, and Range-related headers</em></li> </ul> </div> <div class="col-md-5" id="col2"> <h2 id="related-specifications">Related Specifications</h2> <p>This is a <strong>partial</strong> list of HTTP-relevant specifications, here for convenience. For the complete list of HTTP extensions, see the relevant registry.</p> <h3 id="methods">Methods</h3> <ul> <li>RFC 5789: <a href="/specs/rfc5789.html">PATCH Method</a></li> </ul> <h3 id="status-codes">Status Codes</h3> <ul> <li>RFC 6585: <a href="/specs/rfc6585.html">Status Codes 428, 429, 431 and 511</a> (Precondition Required, Too Many Requests, Request Header Fields Too Large, Network Authentication Required)</li> <li>RFC 7725: <a href="/specs/rfc7725.html">Status Code 451</a> (Unavailable For Legal Reasons)</li> <li>RFC 8297: <a href="/specs/rfc8297.html">Status Code 103</a> (Early Hints)</li> </ul> <h3 id="caching-extensions">Caching Extensions</h3> <ul> <li>RFC 5861: <a href="/specs/rfc5861.html">Cache-Control: stale-while-revalidate and stale-if-error</a></li> <li>RFC 8246: <a href="/specs/rfc8246.html">Cache-Control: immutable</a></li> <li>RFC 9211: <a href="/specs/rfc9211.html">Cache-Status Header Field</a></li> <li>RFC 9213: <a href="/specs/rfc9213.html">Targeted Cache Control Fields</a></li> </ul> <h3 id="content-related-extensions">Content-Related Extensions</h3> <ul> <li>RFC 6265: <a href="/specs/rfc6265.html">Cookies</a></li> <li>RFC 6266: <a href="/specs/rfc6266.html">Content-Disposition</a></li> <li>RFC 7694: <a href="/specs/rfc7694.html">Client Initiated Content-Encoding</a></li> <li>RFC 8144: <a href="/specs/rfc7240.html">Prefer Header Field</a></li> <li>RFC 8288: <a href="/specs/rfc8288.html">Web Linking</a></li> </ul> <h3 id="connection-and-intermediary-extensions">Connection and Intermediary Extensions</h3> <ul> <li>RFC 7639: <a href="/specs/rfc7639.html">ALPN Header Field</a></li> <li>RFC 7838: <a href="/specs/rfc7838.html">Alternative Services</a></li> <li>RFC 8336: <a href="/specs/rfc8336.html">ORIGIN HTTP/2 Frame</a></li> <li>RFC 8441: <a href="/specs/rfc8441.html">Bootstrapping WebSockets with HTTP/2</a></li> <li>RFC 9209: <a href="/specs/rfc9209.html">Proxy-Status Field</a></li> <li>RFC 9218: <a href="/specs/rfc9218.html">Extensible Prioritization Scheme for HTTP</a></li> <li>RFC 9220: <a href="/specs/rfc9220.html">Bootstrapping WebSockets with HTTP/3</a></li> <li>RFC 9298: <a href="https://www.rfc-editor.org/rfc/rfc9298">Proxying UDP in HTTP</a></li> <li>RFC 9412: <a href="/specs/rfc9412.html">Origin HTTP/3 Frame</a></li> <li>RFC 9440: <a href="/specs/rfc9440.html">Client-Cert HTTP Header Field</a></li> </ul> <h3 id="security-related-extensions">Security-Related Extensions</h3> <ul> <li>RFC 7616: <a href="/specs/rfc7616.html">HTTP Digest Access Authentication</a></li> <li>RFC 7617: <a href="/specs/rfc7617.html">HTTP Basic Authentication</a></li> <li>RFC 8188: <a href="/specs/rfc8188.html">Encrypted Content-Encoding</a></li> <li>RFC 8470: <a href="/specs/rfc8470.html">Using Early Data in HTTP</a></li> <li>RFC 9421: <a href="/specs/rfc9421.html">HTTP Message Signatures</a> (<a href="https://httpsig.org">online demo</a>)</li> <li>RFC 9530: <a href="/specs/rfc9530.html">Digest Fields</a></li> </ul> </div> </div> </div> <p class="github-link"><a href="https://github.com/httpwg/httpwg.github.io/blob/main/specs/"><img src="/assets/github.png" alt="Source on GitHub"/></a></p> <script src="/assets/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script> </body> </html>