HTTPfy

100 Continue

Interim response: the server has received the request headers and the client may send the body.

100 at a glance

Code
100
Name
Continue
Class
1xx Informational
Status
IANA-registered standard code
Defined in
RFC 9110, Section 15.2.1
Cacheable by default
No. Interim (1xx) responses are never stored by caches.

What 100 means

100 Continue answers a request that carried Expect: 100-continue. The client sends its headers first, waits for 100, and only then uploads a possibly large body, so a server that would reject the request (wrong credentials, body too large) can say so before megabytes are transferred. It is an interim response: a final status such as 200 or 413 always follows.

What typically causes a 100

  • curl and many HTTP libraries add Expect: 100-continue automatically for larger POST or PUT bodies.
  • Upload clients for S3 and other object stores use it so a failed auth check does not waste the upload.
  • You rarely see it in browser DevTools; browsers do not send Expect.

Fix it on the server

  • Most servers (nginx, Apache, Node.js, Go net/http) send 100 automatically when the application starts reading the body.
  • If you reject a request early, send the final status (401, 413) instead of 100 and close or drain the connection.

Fix it as a client or visitor

  • If uploads stall for about one second before starting, the client is waiting for a 100 that a proxy never forwards. Disable the header, e.g. curl -H "Expect:".
  • A 417 Expectation Failed means the server or a proxy refuses the Expect header; resend without it.

Headers that go with 100

HeaderRole
ExpectRequest header Expect: 100-continue that triggers it.

Example response

HTTP/1.1 100 Continue

HTTP/1.1 201 Created
Location: /uploads/42
Content-Length: 0

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.