100 Continue: la respuesta provisional antes de una subida

100 Continue es una respuesta provisional que indica al cliente que las cabeceras de su solicitud se aceptaron y que ya puede enviar el cuerpo.

Comprueba el código de estado de una URL

100 Continue es una respuesta provisional. Le dice al cliente que el servidor ha leído las cabeceras de la solicitud, no las ha rechazado y está listo para recibir el cuerpo. La respuesta real, un estado final como 201 Created, llega cuando el cuerpo ya se ha recibido.

Qué dice el estándar

La RFC 9110, sección 15.2.1 define el 100 como señal de que “la parte inicial de una solicitud se ha recibido y el servidor todavía no la ha rechazado”. Funciona junto con la cabecera de solicitud Expect: 100-continue: el cliente envía sus cabeceras, hace una pausa y solo transmite un cuerpo grande cuando el servidor da luz verde.

El objetivo es evitar subidas inútiles. Si el servidor ya sabe que va a rechazar la solicitud (el archivo es demasiado grande, faltan las credenciales), puede responder de inmediato con 413 Content Too Large o 401 Unauthorized, y el cliente nunca llega a enviar el archivo de 500 MB. Si el servidor no puede cumplir la expectativa en absoluto, puede responder 417 Expectation Failed.

Dónde te lo vas a encontrar

  • Subidas de archivos y solicitudes POST o PUT grandes desde herramientas de línea de comandos y SDK. curl, por ejemplo, añade Expect: 100-continue por su cuenta cuando el cuerpo de la solicitud es grande.
  • API de almacenamiento de objetos y los proxies que les hacen llegar las subidas.
  • Proxies antiguos que no gestionan la expectativa: la subida se queda parada un momento mientras el cliente espera y, al final, envía los datos igualmente.

Impacto en el SEO

Ninguno en el rastreo normal. Los rastreadores de los buscadores piden las páginas con solicitudes GET sin cuerpo, así que no hay nada que “continuar”. Como los códigos 1xx son provisionales, el rastreador actúa según el estado final que llega después. Nuestro comprobador de cabeceras HTTP también informa de esa respuesta final. Si alguna herramienta muestra un 100 como resultado final de una página, el servidor o un proxy está cortando la respuesta, así que trátalo como un error de servidor.

Cómo arreglar los retrasos en las subidas

Si las subidas que pasan por un proxy se quedan colgadas un segundo antes de empezar, elimina la expectativa desde el cliente. En la extensión cURL de PHP, una cabecera vacía la descarta:

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']);

Con la línea de comandos de curl, añade -H 'Expect:'. En el lado del servidor, asegúrate de que la aplicación, o el proxy que tiene delante, responda al 100 con rapidez o rechace la solicitud cuanto antes.

Ejemplo de intercambio

PUT /uploads/video.mp4 HTTP/1.1
Host: storage.example.com
Content-Type: video/mp4
Content-Length: 524288000
Expect: 100-continue

HTTP/1.1 100 Continue

[el cliente envía el cuerpo de 500 MB]

HTTP/1.1 201 Created
Location: /uploads/video.mp4

Preguntas frecuentes

¿100 Continue es un error?

No. Es una respuesta informativa que indica que el servidor aceptó las cabeceras de la solicitud y espera el cuerpo. Siempre le sigue un código de estado final, como 200 o 201.

¿Por qué mi herramienta de subida espera antes de enviar los datos?

Envió Expect: 100-continue y espera el visto bueno del servidor. Si el servidor o un proxy no responde, curl espera por defecto alrededor de un segundo y luego envía el cuerpo igualmente. Quitar la cabecera Expect evita ese retraso.

¿Googlebot recibe alguna vez un 100 Continue?

No en el rastreo normal. Googlebot pide las páginas con GET y no envía cuerpo, así que no hay nada que confirmar. Lo que importa para el SEO es el código de estado final de la página.