Early-Data
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The HTTP Early-Data
request header is set by an intermediary to indicate that the request has been conveyed in TLS early data, and also indicates that the intermediary understands the 425 Too Early
status code.
If a client has interacted with a server recently, early data (also known as zero round-trip time (0-RTT) data) allows the client to send data to a server in the first round trip of a connection, without waiting for the TLS handshake to complete. This reduces latency for repeat connections between a client and server, but has security implications, as early data is susceptible to replay attacks.
The Early-Data
header is not set by the originator of the request (i.e., a browser).
Header type | Request header |
---|---|
Forbidden header name | No |
Syntax
Early-Data: 1
Examples
A GET request with an Early-Data header
A client that wants to use early data can send HTTP requests immediately after sending the TLS ClientHello
.
Sending a request in early data implies that the client is willing to retry a request in response to a 425 Too Early
status code, so the Early-Data
header is not included:
GET /resource HTTP/1.1
Host: example.com
An intermediary that forwards a request prior to the completion of the TLS handshake with its client sends it with the Early-Data
header set to 1
:
GET /resource HTTP/1.1
Host: example.com
Early-Data: 1
Specifications
Specification |
---|
Using Early Data in HTTP # header |
Browser compatibility
BCD tables only load in the browser