Status Code

Un status code es un código de respuesta HTTP o HTTPS que utiliza el servidor para hacer saber al cliente el estado de la petición y si esta tuvo éxito o no.

En la RFC 2616, sección 10 podemos ver todos los status code que soporta HTTP 1.1, pero aquí vamos a citar los mas relevantes.

Respuesta exitosa

200 OK

La petición ha sido exitosa y el servidor devuelve un status code 200 para indicarselo al cliente.Edit

206 Partial Content

El contenido devuelto no es todo el contenido. Este tipo de respuestas se dan ante peticiones de tipo range, cuando el cliente pide explícitamente una parte del objeto mediante la cabecera Content-Range.

Redirecciones

301 Moved Permanently

Este status code indica una redirección permanente, es decir, no se ha de volver a cambiar. Este tipo de peticiones son cacheables tanto por proxy cache como por navegadores. Hay que tener cuidado al usarlas porque pueden confundir.

302 Found

Se usa para identificar una redirección temporal, por lo que no se cachea nunca en proxys ni en navegadores.

304 Not Modified

Nos indica que el contenido no ha cambiado en el servidor. Para saberlo, tanto los navegadores como los proxys envían a los servidores web de los clientes la petición junto con la cabecera If-modified-since.

Errores de client

400 Bad Request.

Vemos este tipo de error cuando el servidor no entiende la petición que le está mandando el cliente. Por lo general, no se suelen ver en los navegadores y se ven más cuando son procesos o aplicaciones que construyen su propia petición HTTP. Suele deberse a una petición mal formada.

401 Unauthorized

En ocasiones se necesita que un site o parte de él este protegido bajo usuario/contraseña y es aquí cuando este status code nos indica un acceso no autorizado al recurso. Las peticiones que llevan autenticación no se cachean en Transparent CDN.

403 Forbbiden

Nos indica que estamos entrando a una parte restringida del site al cual se nos deniega el acceso, posiblemente por motivos de seguridad. Puede ser por una restricción de IP o porque está intentando explotar alguna vulnerabilidad de la aplicación web. Esto último ocurre solo si se cuenta con la capa de seguridad Secure Layer.

404 Not Found

Este tipo de error es muy común. Significa simplemente que el recurso web que estamos solicitando no se encuentra en el servidor.

405 Method not Allowed

Este código de estado es devuelto cuando el cliente hace una petición HTTP mediante un protocolo no soportado por la caché o servidor. En Transparent CDN están permitidos los siguientes metodos:

GET
POST
PUT
DELETE
OPTIONS
PROPFIND
PUSH
HEAD

408 Timeout

Es un error complejo. Significa que la conexión se ha cerrado por superación del tiempo de espera. Si el error se produce en el servidor del cliente, ese error se transformará en un 503 en Transparent CDN. En condiciones normales suele deberse a algún problema de comunicaciones, ya sea por algún firewall interno, un error interno del servidor o firewall/proxy entre Transparent CDN y el cliente. Cualquier mensaje de "connection close" o "closing connection" en los logs del servidor de cliente puede significar el 408. Hemos tenido problemas históricos con módulos de Apache que provocaban ese error, como el mpm_itk (http://mpm-itk.sesse.net/).

Errores de servidor

500 Internal Server Error

Error de servidor, por lo general de aplicación. Por ejemplo, pueden provocarlo unas comillas mal cerradas en PHP.

502 Bad Gateway

Es un código devuelto por algunos web server cuando actúan como proxy inverso y el recurso que está detrás no está disponible. Muy típico de nginx.

503 Service Unavailable

El servicio no está disponible. Este error es devuelto cuando no se puede contactar con el servidor web del cliente, bien porque está caído, bien por problema de comunicaciones. Este error es generado "al vuelo" por Transparent CDN cuando hay algún error fatal en el cliente. Cuando se reciben los 503 en el cliente hay que buscar por cualquier tipo de error en los logs del cliente.

504 Gateway Timeout

Este código de respuesta suele darse cuando el servidor de origen del cliente esta tardando mucho en devolver un objeto no cacheado, bien porque no debe cachearse o bien porque haya caducado.

Transparent CDN te protege ante todos los errores 5XX mostrando la última versión cacheada. Puedes ver más información aquí.