Saltar al contenido

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

bash
curl -X PUT --data-binary @backup.tar.gz -H "Expect:" https://api.ejemplo.com/subidas/backup.tar.gz

Ejemplo de respuesta

http
> 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 Created

Herramientas 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.

Códigos relacionados

Ver todos los códigos de estado HTTP