1xx · Informativos
Código HTTP 100 Continue: qué significa
El código 100 Continue es una respuesta provisional: el servidor confirma que ha leído las cabeceras de la petición y que el cliente puede seguir enviando el cuerpo. Se usa con la cabecera "Expect: 100-continue" para no subir un fichero grande que el servidor va a rechazar de todos modos.
Qué significa el código 100
Cuando un cliente va a enviar un cuerpo grande (una subida de varios cientos de megas, por ejemplo), puede preguntar antes si el servidor lo va a aceptar. Para ello añade la cabecera Expect: 100-continue y espera. Si el servidor responde 100 Continue, el cliente envía el cuerpo; si responde con un error (413, 401, 417), el cliente se ahorra subir datos para nada.
Es una respuesta informativa: nunca es la respuesta final. Después del 100 siempre llega otra respuesta (200, 201, 413…). Los navegadores casi no la usan; quien la ve a diario es curl, que añade Expect: 100-continue automáticamente cuando el cuerpo supera 1 MB.
Cuándo aparece
- curl o un cliente HTTP envía Expect: 100-continue al subir un fichero grande con POST o PUT.
- Clientes de APIs de almacenamiento (S3, Azure Blob) que lo usan para validar credenciales antes de subir.
Qué tener en cuenta
- No hay nada que arreglar: es el comportamiento normal del protocolo.
- Si un proxy antiguo no entiende Expect y la subida se queda esperando un segundo, puedes desactivarlo en curl con -H "Expect:" (cabecera vacía).
- En HTTP/2 y HTTP/3 el mecanismo sigue existiendo, pero los proxies modernos lo gestionan sin retrasos.
Configuración y comandos
curl sin Expect: 100-continue
curl -X PUT --data-binary @backup.tar.gz -H "Expect:" https://api.ejemplo.com/subidas/backup.tar.gzEjemplo de respuesta
> PUT /subidas/backup.tar.gz HTTP/1.1
> Content-Length: 524288000
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
(el cliente envía los 500 MB)
< HTTP/1.1 201 CreatedHerramientas para comprobarlo
Preguntas frecuentes
¿El código 100 es un error?
No. Es una respuesta provisional que indica que todo va bien hasta ahora y que el cliente puede enviar el cuerpo de la petición.
¿Por qué curl tarda un segundo en algunas subidas?
Porque envía Expect: 100-continue y, si el servidor no contesta con 100, espera un segundo antes de mandar el cuerpo igualmente. Con -H "Expect:" se elimina esa espera.