Error Codes Wiki

HTTP 100 Continue Errors — Expect Header Request Flow Issues

Informational1xx informational

About HTTP 100 Continue Errors

Fix HTTP 100 Continue flow errors where servers fail to respond to Expect headers, causing client timeouts and large upload failures. This guide covers everything you need to know about this topic, including common causes, step-by-step solutions, and answers to frequently asked questions.

Here are the key things to understand: The Expect: 100-continue header asks the server to confirm it will accept the request before the client sends the body. This is useful for large uploads — the client can avoid sending a large body that will be rejected. The server responds with 100 Continue to proceed or 417 Expectation Failed to reject. Some servers and proxies do not properly support the 100 Continue flow. Clients typically wait a timeout period (1-2 seconds) for 100 Continue before sending the body anyway. Understanding these fundamentals will help you diagnose and resolve this issue more effectively.

The most common reasons this occurs include: Server not implementing 100 Continue support — ignoring the Expect header entirely. Proxy stripping the Expect header before forwarding to the backend server. Client timeout too short, sending the body before receiving the 100 Continue response. Load balancer not forwarding the 100 Continue response from the backend to the client. Identifying the root cause is the first step toward finding the right solution.

To resolve this, follow these recommended steps: Configure your server to handle the Expect: 100-continue header and respond with 100 or 417. Ensure proxies forward the Expect header: in Nginx, use 'proxy_set_header Expect $http_expect;'. Increase the client-side Expect timeout if the server is slow to respond. If 100 Continue is not needed, disable it in your HTTP client library to avoid unnecessary delays. Test with curl: 'curl -v -H "Expect: 100-continue" -d @largefile.dat https://your-server.com/upload'. If these steps do not resolve the issue, consider consulting additional resources or a qualified professional.

This article is part of our HTTP Status Codes collection on Error Codes Wiki. We provide comprehensive, up-to-date information to help you find solutions quickly.

Quick Answer

Why does curl wait before sending data?

curl automatically sends the Expect: 100-continue header for POST requests over 1024 bytes. It waits 1 second for a 100 Continue response before sending the body. Disable with -H 'Expect:'.

Overview

Fix HTTP 100 Continue flow errors where servers fail to respond to Expect headers, causing client timeouts and large upload failures.

Key Details

  • The Expect: 100-continue header asks the server to confirm it will accept the request before the client sends the body
  • This is useful for large uploads — the client can avoid sending a large body that will be rejected
  • The server responds with 100 Continue to proceed or 417 Expectation Failed to reject
  • Some servers and proxies do not properly support the 100 Continue flow
  • Clients typically wait a timeout period (1-2 seconds) for 100 Continue before sending the body anyway

Common Causes

  • Server not implementing 100 Continue support — ignoring the Expect header entirely
  • Proxy stripping the Expect header before forwarding to the backend server
  • Client timeout too short, sending the body before receiving the 100 Continue response
  • Load balancer not forwarding the 100 Continue response from the backend to the client

Steps

  1. 1Configure your server to handle the Expect: 100-continue header and respond with 100 or 417
  2. 2Ensure proxies forward the Expect header: in Nginx, use 'proxy_set_header Expect $http_expect;'
  3. 3Increase the client-side Expect timeout if the server is slow to respond
  4. 4If 100 Continue is not needed, disable it in your HTTP client library to avoid unnecessary delays
  5. 5Test with curl: 'curl -v -H "Expect: 100-continue" -d @largefile.dat https://your-server.com/upload'

Tags

expect100-continueuploadheaderflow-control

More in 1xx Informational

Frequently Asked Questions

curl automatically sends the Expect: 100-continue header for POST requests over 1024 bytes. It waits 1 second for a 100 Continue response before sending the body. Disable with -H 'Expect:'.