100 Continue est une réponse intermédiaire (informative). Elle indique au client que le serveur a reçu les en-têtes de la requête, ne les a pas rejetés et est prêt à recevoir le corps de la requête. La réponse finale, par exemple 201 Created ou 413 Content Too Large, arrive ensuite sur la même connexion.
Ce code existe pour les envois volumineux. Un client qui ne veut pas transmettre des mégaoctets de données pour se les voir refuser ajoute Expect: 100-continue à sa requête et patiente un court instant. Si le serveur répond 100 Continue, le client envoie le corps. Si le serveur répond par une erreur définitive comme 401 ou 413, le client peut renoncer à l’envoi. Un serveur incapable de satisfaire cette attente peut répondre 417 Expectation Failed.
Les navigateurs n’envoient pas Expect: 100-continue d’eux-mêmes. Ce mécanisme est utilisé par les bibliothèques HTTP, les outils en ligne de commande comme curl et les clients d’API qui envoient des fichiers. Les clients n’attendent pas indéfiniment : si aucune réponse 100 n’arrive dans un court délai (une seconde par défaut avec curl), ils envoient quand même le corps. Les serveurs ne doivent pas envoyer de réponses 1xx aux clients HTTP/1.0.
Exemple de réponse
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: /uploads/7f3c9a2e
Content-Length: 0 SEO et vérification des redirections
Un code 100 n’est jamais vu par les moteurs de recherche comme le statut d’une page. Il est toujours suivi d’une réponse finale, et c’est ce statut final que signalent les robots d’exploration et le vérificateur de redirections. Les réponses intermédiaires sont absorbées par le client HTTP : TrueURL affiche donc le statut final de chaque saut, et non un éventuel 100 Continue qui l’aurait précédé.
Causes fréquentes et cas d’usage
- Un client d’API ou curl envoie un corps volumineux avec
Expect: 100-continue, et le serveur accepte de le recevoir. - Un proxy inverse ou un serveur d’applications répond à cette attente à la place de l’application.
- Les envois restent bloqués environ une seconde avant de démarrer : le client attend un
100 Continueque le serveur n’envoie jamais. Désactivez cette attente dans le client ou prenez-la en charge sur le serveur.