Contenido

El src de una imágen puede cargarse tu página

1 Dic

+ 4

Nicholas C.Zakas publica un artículo que muestra que cada navegador interpreta los estándares web como quiere. En este caso nos pone un ejemplo:

<img src="" />

y el mismo en Javascript

var img = new Image();
img.src = "";

En los ejemplos vemos que creamos un tag <img /> (en Javascript un objeto Image()) al que no le indicamos la ruta de la imagen.

Estudiando el resultado en los diferentes navegadores, ha descubierto que partiendo de la URL http://www.ejemplo.com/bla/ejemplo.html se diferencian dos resultados:

  • Internet Explorer: Realiza una única petición al directorio en el que está alojada la página.
  • Firefox, Safari y Chrome: Realizan una petición a la misma página que hace la petición.
  • Opera: No hace nada.

El caso que nos preocupa sería el provocado por Firefox, Safari y Chrome, ya que al volver a cargar la página que está ejecutando la petición cargará otra nueva versión de la página que provocará el mismo problema al volver a ejecutar la petición de nuevo y así hasta que el servidor aguante. A mayor número de visitas mayor número de peticiones.

Este problema que parece muy concreto puede darse fácilmente con una construcción php tan simple como esta:

<img src="$imageUrl" >

Aunque Nicholas nos propone una solución en PHP que mediante htaccess redirigimos todas las imágenes por una página PHP que comprueba que el referrer sea diferente al de la página.

<?php
    //Works for IE only when using path URLs and not file URLs

    //get the referrer
    $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

    //current URL (assuming HTTP and default port)
    $url = "http://" . $_SERVER['HTTP_HOST']  . $_SERVER['REQUEST_URI'];

    //make sure they're not the same
    if ($referrer == $url){
        exit;
    }
?>

Esta solución, aunque no es muy apropiada ya que nos va a ejecutar este código por cada imagen que usemos en nuestra página, nos permite salir del paso mientras los navegadores se van actualizando, cosa que ya están haciendo.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.