7.2.1.3. Códigos de respuesta

Ya se ha ilustrado cómo la primera línea de la respuesta de un servidor incluye un código que informa al cliente de cuál ha sido la suerte que ha corrido su petición. Esta línea tiene el siguiente formato:

HTTP/VERSION CODIGO LEYENDA_DEL_CODIGO

La leyenda está asociada al código númerico, de manera que cada uno tiene referida en el estándar la suya.

Los códigos numéricos tienen tres cifras y la primera de ellas indica la naturaleza de la respuesta. Algunos de los códigos más habituales son los siguientes[1]:

1XX

Respuestas informativas.

2XX

Peticiones correctas. La más habitual en las peticiones que piden recursos es 200 OK.

3XX

Redirecciones. Ante esta respuesta, se supone que el cliente deberá su petición pidiendo otro recurso. Algunos de los códigos posibles son:

301 Moved Permanently

El servidor informa de que las peticiones a este recurso, se debería redirigir a otro. Por ejemplo:

$ wget --spider -qS --max-redirect=0 'http://biblioteca.example.net/wp-admin'
  HTTP/1.1 301 Moved Permanently
  Server: nginx
  Date: Sat, 27 Jan 2018 11:22:24 GMT
  Content-Type: text/html
  Location: http://www.example.net/biblioteca/wp-admin
  X-Varnish: 170711
  Age: 0
  Via: 1.1 varnish-v4
  Content-Length: 178
  Connection: keep-alive

O sea, el servidor responde que el recurso pedido siempre se encontrará en el valor del campo Location. Por tanto, el cliente deberá pedir ese recurso en una nueva petición si quiere acceder al contenido. Por lo general, los clientes recuerdan esto y, si volvemos a pedir el primer recurso, harán directamente la segunda petición para ahorrar tiempo y ancho de banda.

302 Found

Originariamente, en HTTP/1.0 su descripción es Moved Temporarily y significa volver a repetir la petición usando el recurso declarado en el campo Location. Sin embargo, los navegadores implementaron la respuesta repitiendo la petición usando el método GET, aunque la petición original fuera POST. Por compatibilidad con navegadores antiguos, algunos servidores siguen usando este significado. HTTP/1.1 introdujo dos nuevos códigos, los 303 y 307, para evitar cualquier posible ambigüedad.

303 See Other

Insta a repetir la petición usando el método GET.

304 Not Modified

Respuesta que envía el servidor si el recurso no ha cambiado desde la última vez que el cliente hizo la misma petición. Para ello el cliente debe enviar un campo de cabecera If-Modified-Since con la fecha y hora para el servidor pueda tomarlo como referencia.

307 Temporary Redirect

Como 303, pero en este caso no se permite cambiar el método inicial de petición, por lo que si el cliente usó el método POST también tendrá que usarlo para pedir el recurso en la nueva dirección suministrada.

308 Permanent Redirect

Como 301, pero se impide el cambio de método de petición.

4XX

Peticiones erróneas a causa del cliente

400 Bad Request

La sintaxis de la petición es errónea.

401 Unathorized

Se prohibe el acceso porque la autorización requerida ha fallado.

403 Forbidden

El acceso al recurso está prohibido.

404 Not Found

El recurso solicitado no existe.

405 Method Not Allowed

El método utilizado no se permite.

406 Not Acceptable

El servidor no es capaz de devolver el recurso en ninguno de los formatos aceptados por el cliente.

410 Gone

El recurso solicitado se eliminó del servidor y no volverá a estar disponible nunca más.

451 Unavailable for Legal Reasons

El recurso solicitado se eliminó del servidor por mandato judicial.

5XX

Peticiones erróneas a causa del servidor. En estos casos el servidor debe informar de cuál es la razón del error (en el cuerpo de la respuesta)

500 Internal error

Suele ser producido por errores de las aplicaciones web empotradas en el servidor y que generan contenido dinámico.

501 Not implemented

El servidor no soporta alguna funcionalidad que se requiere para responder a la petición. Por ejemplo, no soporta el método solicitado.

502 Bad Gateway

Respondido por proxy que no logran contactar con el servidor de backend.

503 Service Unavailable

No se puede responder a la petición del cliente.

Notas al pie