HTTP (Hypertext Transfer Protocol)
HTTP (Hypertext Transfer Protocol) is an application-level Internet protocol for transferring and manipulating representations of resources, such as webpages. HTTP supports many features, including retrieving and manipulating resources, caching, content negotiation, range (subset) requests, link relationships, authentication, and more.
Uses for HTTP
Use HTTP whenever you need to download files from another system on a network, or let clients manipulate the documents, settings, or devices on the network. It supports:
- Downloading & uploading documents
- Making changes to documents
- Changing the state of a device
- Authenticating users making requests
- Checking if a document has changed
- Publishing link relationships between resources
- Segmented downloads
- Caching with private and shared caches
Table of Contents
HTTP Concepts
Articles
- Clients
- Servers
- Idempotent requests
- Conditional requests
- Redirecting requests
- Resumable downloads with Range
- Resumable uploads
- Caching responses
- Authorization & access control
- Asynchronous Responses
- Conceptual Model
- Closing client connections
- Query resources and server-side query evaluation
Specifications
- BCP56: RFC3205: On the use of HTTP as a Substrate
- RFC3230: Instance Digests in HTTP
- RFC6249: Metalink/HTTP: Mirrors and Hashes
- RFC6265: HTTP State Management Mechanism
- RFC6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
- RFC6585: Additional HTTP Status Codes
- RFC7234: HTTP/1.1: Caching
- RFC7239: HTTP Forwarded
- RFC7240: HTTP Preferences
- RFC7540: Hypertext Transfer Protocol Version 2 (HTTP/2)
- RFC7725: An HTTP Status Code to Report Legal Obstacles
- RFC8164: Opportunistic Security for HTTP/2
- RFC8188: Encrypted Content-Encoding for HTTP
- RFC8246: HTTP Immutable Responses
- RFC8288: Web Linking
- RFC8470: Using Early Data in HTTP
- RFC9110: HTTP Semantics
- RFC9111: HTTP Caching
- RFC9112: HTTP/1.1
- RFC9113: HTTP/2
- RFC9114: HTTP/3
History
1992-06-11
HTTP/0.9 is described. It only supports GET.
1993-03
Gopher is first published.
1996-05
RFC 1945 (HTTP/1.0) is published.
1997-01
RFC 2068 (HTTP/1.1) is published.
1999-06
RFC 2616 (HTTP/1.1) is published.
2014-06
RFC 7231 (HTTP Semantics) is published, alongside:
- RFC 7230 (Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing)
- RFC 7232 (Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests)
- RFC 7233 (Hypertext Transfer Protocol (HTTP/1.1): Range Requests)
- RFC 7234 (Hypertext Transfer Protocol (HTTP/1.1): Caching)
- RFC 7235 (Hypertext Transfer Protocol (HTTP/1.1): Authentication)
- RFC 7236 (Initial Hypertext Transfer Protocol (HTTP) Authentication Scheme Registrations)
- RFC 7237 (Initial Hypertext Transfer Protocol (HTTP) Method Registrations)
- RFC 7238 (The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect))
- RFC 7239 (Forwarded HTTP Extension)
- RFC 7240 (Prefer Header for HTTP)
2022-06
RFC 9110 (HTTP Semantics) is published, along with others: