Pauses d'envoi HTTP et Expect: 100-continue
Reconnaître l'échange Expect: 100-continue et distinguer son bref point de décision d'un envoi bloqué pendant le transfert des données.
La connexion s'ouvre. Les en-têtes de la requête partent. Le fichier semble ne pas bouger. Une explication est que le client attend une réponse à Expect: 100-continue avant d'envoyer son corps.
Le mécanisme permet au destinataire de rejeter une requête d'après ses en-têtes avant qu'un envoi potentiellement volumineux ne soit transmis. La séquence réussie habituelle est :
request headers → 100 Continue → request body → final response100 est informatif : il autorise le client à poursuivre, mais ne signifie pas que le fichier a été stocké ni que l'opération applicative a réussi. Un Git push renvoyant HTTP 417 est un cas concret d'attente non satisfaite.
Déterminer quelle réponse le client a reçue
| Observation | Signification à examiner |
|---|---|
| 100 Continue | Le client peut poursuivre avec le corps |
| Un refus définitif avant le corps | L'opération a été refusée au stade des en-têtes |
| Aucune réponse intermédiaire attendue | La politique d'attente du client et le traitement sur ce chemin |
curl propose un réglage d'attente dédié à expect-continue. Si cette attente de libcurl expire sans la réponse attendue, il envoie quand même le corps ; l'expiration n'est pas automatiquement l'échec de tout le transfert. Le réglage est distinct du temps accordé au transfert complet. Augmenter ce dernier peut laisser la même pause initiale inexpliquée.
Identifiez aussi quelle conversation HTTP porte Expect. Avec un CONNECT ordinaire vers une destination HTTPS, l'échange d'envoi du site se trouve à l'intérieur de TLS ; le proxy mandataire n'inspecte pas simplement son en-tête d'attente interne. Un chemin d'interception ou de transfert en clair est différent.
Retirer l'attente peut être un choix de compatibilité délibéré, mais cela signifie que le client peut commencer à envoyer un corps volumineux avant d'apprendre un refus précoce. Comparez ce comportement à l'exigence réelle. Ne présentez pas un contournement historique pour un ancien proxy comme une consigne universelle de supprimer l'en-tête de chaque envoi.