Saltar al contenido

HTTP 304 Not Modified

Se ha recibido una petición GET o HEAD condicional que habría dado lugar a una respuesta 200 OK si no fuera porque la condición se evaluó como falsa.

El código HTTP 304 significa «Sin modificaciones» o «Not Modified» y no es realmente un error. Indica que el cliente ha realizado una solicitud con el encabezado «If-Modified-Since» o «If-None-Match» y el recurso solicitado no ha sido modificado desde la última vez que fue solicitado. En lugar de devolver el cuerpo de la respuesta, el servidor simplemente devuelve los encabezados de la respuesta, incluidos los encabezados «Last-Modified» o «ETag», que indican la fecha y hora de la última modificación del recurso. Esto permite al cliente almacenar en caché el recurso y reducir el ancho de banda y el tiempo de respuesta de la solicitud.

En otras palabras, no hay necesidad de que el servidor transfiera una representación del recurso de destino porque la petición indica que el cliente, que hizo la petición condicional, ya tiene una representación válida; por lo tanto, el servidor está redirigiendo al cliente para que haga uso de esa representación almacenada como si fuera la carga útil (payload) de una respuesta HTTP 200 OK.

El servidor que genera una respuesta del código HTTP 304 DEBE generar cualquiera de los siguientes campos de cabecera que se habrían enviado en una respuesta de Código HTTP 200 OK a la misma petición: Cache-Control, Content-Location, Date, ETag, Expires y Vary.

Dado que el objetivo de una respuesta del código 304 HTTP es minimizar la transferencia de información cuando el destinatario ya tiene una o más representaciones en la caché, un remitente NO DEBERÍA generar metadatos de representación distintos de los campos enumerados anteriormente, a menos que dichos metadatos existan con el fin de guiar las actualizaciones de la caché (por ejemplo, Last-Modified podría ser útil si la respuesta no tiene un campo ETag).

Los requisitos de una caché que recibe una respuesta HTTP 304 se definen en la sección 4.3.4 de la RFC7234. Si la solicitud condicional se originó con un cliente saliente, como un agente de usuario con su propia caché enviando un GET condicional a un proxy compartido, entonces el proxy DEBERÍA reenviar la respuesta 304 HTTP a ese cliente.

Una respuesta código 304 no puede contener un cuerpo de mensaje; siempre termina con la primera línea vacía después de los campos de cabecera.

Referencias de programación del Código HTTP 304

  • Symfony HTTP Status Constant Response::HTTP_NOT_MODIFIED
  • Python2 HTTP Status Constant httplib.NOT_MODIFIED
  • Python3+ HTTP Status Constant http.client.NOT_MODIFIED
  • Python3.5+ HTTP Status Constant http.HTTPStatus.NOT_MODIFIED
  • Go HTTP Status Constant http.StatusNotModified
  • Rails HTTP Status Symbol :not_modified
  • .NET HTTP Status Constant System.Net.HttpStatusCode.NotModified
  • C# HTTP Status Enum HttpStatusCode.NotModified
  • Rust HTTP Status Constant http::StatusCode::NOT_MODIFIED
Resumen
HTTP 304 Not Modified
Nombre del artículo
HTTP 304 Not Modified
Descripción
Se ha recibido una petición "GET" o "HEAD" condicional que habría dado lugar a una respuesta "200 OK" si no fuera porque la condición se evaluó como falsa.
Autor
Publisher Name
Códigos HTTP
Publisher Logo

Adblock Detectado

Por favor, considera apoyarnos desactivando Adblock (bloqueador de publicidad) o donando a través de PayPal

Refresh Page
x