# Referer

HTTP referer (un error ortográfico del término referrer) es el nombre de un campo de cabecera del HTTP opcional que identifica la dirección de la página web (es decir, la URI o IRI) desde la que se realiza la solicitud. A través del chequeo del campo referer, el servidor del nuevo sitio web puede determinar de dónde se originó la solicitud.
En la mayoría de los casos, esto significa que cuando un usuario hace clic en un hipervínculo listado en los resultados del navegador web, el navegador envía una solicitud al servidor que hospeda el sitio web destino y dicha solicitud incluye el campo referer, que indica la última página que el usuario visitó (aquella donde el usuario hizo clic en el vínculo).
El registro del campo referer es utilizado con propósitos estadísticos y promocionales por los sitios web y servidores web, pues les permite identificar desde qué localización están siendo visitados.

## Origen del término referer

El error de ortografía referer tiene su origen en la propuesta del científico de la computación Phillip Hallam-Baker para incorporar este campo en la especificación del HTTP. El error ortográfico fue acuñado para el momento de su incorporación en el documento de los estándares Request for Comments (RFC 1945). El coautor del documento Roy Fielding señaló que ninguno de los términos "referrer" o el error ortográfico "referer" fueron reconocidos por el corrector ortográfico estándar de Unix de ese período. "Referer" se ha convertido, desde entonces, en un término ampliamente utilizado en la industria cuando se habla de apuntadores HTTP. No obstante, el uso del error ortográfico no es universal, dado que "referrer" se utiliza en algunas especificaciones web como el Document Object Model.

## Detalles

Cuando se visita una página web, la página referer corresponde a la URL de la página previa desde la cual se siguió un vínculo.
De forma más general, un referer es la URL de un objeto previo que ha conducido a la solicitud. El campo referer para una imagen, por ejemplo, suele ser la página HTML donde la misma se muestra. El campo referer es una parte opcional de la solicitud HTTP enviada por el navegador web hacia el servidor web.
Hay varios sitios web que registran el campo referer como parte de un intento por localizar a sus usuarios. La mayoría del software existente para el análisis de registros web puede procesar esta información. Debido a que la información contenida en el referer puede violar la privacidad, algunos navegadores web permiten al usuario deshabilitar el envío de información de referencia. Algunos proxy y software de cortafuegos también filtran la información del campo referer, para evitar que se filtre la localización de algunos sitios web privados. Esto puede, en ocasiones, ocasionar problemas: algunos servidores web bloquean parte de sus sitios web a exploradores web que no envían una correcta información referer, en un intento por prevenir enlaces profundos o el uso de imágenes sin autorización (hot-linking). Algunos software de proxy están habilitados para entregar como referer la dirección de nivel superior del sitio de destino, lo que frecuentemente previene estos problemas. No obstante, puede ocurrir que se divulgue el último sitio web visitado por el usuario.
Recientemente muchos blogs han comenzado a publicar información de referencia con el objetivo de crear un vínculo inverso hacia las personas que tienen vínculos a ellos y, con ello, ampliar la conversación. Esto ha conducido, en determinados momentos, al aumento del spam de registro: el envío de falsa información de referencia con el objetivo de popularizar el sitio web que actúa como remitente.
Muchos sitios pornográficos que incluyen pagos utilizan la información del campo referer para proteger sus sitios web. Solamente es otorgado acceso a los exploradores web provenientes de un pequeño grupo de páginas aprobadas (login); esto facilita compartir materiales en grupos de cooperación de sitios de pago. El engaño por referer es en ocasiones utilizado para obtener acceso libre a estos sitios de pago.
Es posible acceder a la información del campo referer en el lado del cliente haciendo uso del document.referrer de JavaScript. Esto puede ser utilizado, por ejemplo, para individualizar una página web basada en una consulta de usuario a un motor de búsquedas. Sin embargo, el campo referer no siempre incluye consultas, como al hacer uso del Buscador de Google con https.

## Ocultar campo referer

La mayoría de los servidores web mantienen un registro de todo el tráfico y guardan el campo referer de HTTP enviado por el navegador web para cada solicitud. Esto desata preocupaciones en cuanto a la privacidad y, como resultado, se han desarrollado distintos sistemas para prevenir enviar a los servidores la URL de referencia real. El funcionamiento de estos sistemas consiste en dejar en blanco el campo referer o reemplazarlo con datos inválidos. Generalmente, los paquetes de Internet security dejan en blanco el campo referer, mientras que los servidores web lo reemplazan por una URL falsa, usualmente la suya. Esto, por supuesto, acrecienta el problema del spam de referencia. Los detalles técnicos de ambos métodos son bastante consistentes, las aplicaciones de software actúan como un servidor proxy y manipulan la solicitud HTTP, mientras que los métodos para la web cargan sitios web dentro de su propio marco, causando que el navegador web envíe una URL de referencia con la dirección de su sitio web. Algunos navegadores web otorgan a sus usuarios la opción de eliminar el campo referer del encabezado de su solicitud.
Los navegadores web, en su mayoría, no envían el campo referer cuando se les solicita una redirección usando el campo "Refrescar". Esto no incluye algunas versiones del Opera y numerosos navegadores web para dispositivos móviles. Sin embargo, este método de redirección es rechazado por la World Wide Web Consortium (W3C).
Si se accede a un sitio web a través de una conexión segura (HTTPS) y algún vínculo apunta a una localización no segura, entonces la información del campo referer no se envía.
El estándar HTML5 soportará el atributo/valor rel = "noreferrer" con el objetivo de indicar al agente para el usuario que el campo referer no debe ser enviado.