¿Por qué se eligió la solicitud HTTP ‘GET’ para transferir imágenes en sitios web?

Esto resulta de la forma en que funciona el protocolo subyacente, HTTP. A saber, utiliza GET para solicitar recursos. De hecho, GET fue el único método admitido en la primera versión del protocolo. También tiene algunas otras características que lo hacen más adecuado para solicitar imágenes.


Pero paso a paso, los métodos disponibles en el protocolo HTTP son:

  • GET: solicita recursos (por ejemplo, página web) del servidor,
  • HEAD: funciona de manera similar a GET, pero espera la respuesta sin cuerpo (los encabezados deberían ser como en el caso del método GET),
  • POST: solicita al servidor que acepte una carga útil específica (por ejemplo, información serializada completada en el formulario en una página web),
  • PUT: similar a POST (sin entrar en demasiados detalles),
  • PARCHE: similar a POST y PUT, pero significa solicitud de actualización parcial del recurso,
  • DELETE: solicitud para eliminar un recurso específico,
  • TRACE: se supone que permite al cliente (navegador, etc.) ver cómo apareció la solicitud en el servidor,
  • OPCIONES: permite al cliente ver qué métodos son compatibles con una URL determinada,
  • CONECTAR – se utiliza para hacer algunas cosas de bajo nivel, por ejemplo. para manejar la conexión SSL,

Entonces, como puede ver, semánticamente solo GET y HEAD se utilizan para solicitar que se envíen datos desde el servidor. El método HEAD es útil si solo desea encabezados.


Los navegadores usan GET principalmente debido a lo anterior. También hay una característica muy útil de la solicitud GET, a saber, la capacidad de almacenamiento en caché. Si el servidor y el cliente admiten el almacenamiento en caché (la mayoría de los servidores web y navegadores web sí lo hacen), a menudo la imagen descargada una vez del servidor se mantiene en el cliente y no se vuelve a solicitar (o se solicita mediante la llamada “solicitud GET condicional”, que a su vez utiliza ” Encabezado If-None-Match “o” If-Modified-Since “).

Además, algunos rastreadores o verificadores de enlaces usan HEAD para solicitar tales imágenes para ver si el servidor responderá con la imagen, pero sin necesidad de descargar la imagen completa.

Además, si los navegadores usaran POST, PUT o PATCH, perderían la capacidad de almacenamiento en caché, incluido el almacenamiento en caché en servidores intermediarios.

Eso responde tu pregunta?

Además de la respuesta de Tomasz, me gustaría agregar que la semántica del método GET dictamina que se use en situaciones donde no hay un efecto secundario de solicitar recursos. Una imagen resulta ser un recurso de este tipo, que solicita cuál no debería causar un efecto secundario en el servidor. Por lo tanto, GET es el método más lógico para usar aquí.

No hay nada de malo en decir que usar una solicitud POST para hacer lo mismo, sin embargo, la semántica del protocolo se descompone si se hace así.