Cada vez que se solicita una página obtengo la referencia de la página de donde proviene. Necesito rastrear referencias de otros sitios, no quiero seguir yendo de una página a otra dentro de mi sitio. ¿Cómo puedo hacer eso?¿Cómo puedo determinar si document.referrer es de mi propio sitio?
Respuesta
document.referrer.indexOf(location.protocol + "//" + location.host) === 0;
originalmente publicado en JavaScript - Am I the Referrer?
Cuando alguien viene a nuestro sitio web por primera vez, almacenamos la de referencia en una cookie. De esta forma, si descargan nuestra demostración, podemos obtener la referencia original de la cookie y nos enteramos de qué sitios son efectivos para dirigirnos.
Por supuesto, cada página subsiguiente que un visitante acceda a nuestro sitio web mostrará el referido como nuestro sitio web. No queremos esos. Lo primero que hicimos para evitar esto fue buscar el texto "a barlovento" en la referencia y, de ser así, asumir que era de nuestro sitio. El problema con esto es que descubrimos que una gran cantidad de URL de referencia ahora tienen barlovento en ellas, ya sea como un término de búsqueda o como parte de una URL que habla de Windward. (Esta es una buena noticia, significa que ahora somos un producto bien conocido).
Eso me llevó a nuestro enfoque más reciente. Esto debería funcionar para cualquier sitio y solo debería rechazar referencias del mismo sitio.
function IsReferredFromMe()
{
var ref = document.referrer;
if ((ref == null) || (ref.length == 0)) {
return false;
}
if (ref.indexOf("http://") == 0) {
ref = ref.substring(7);
}
ref = ref.toLowerCase();
var myDomain = document.domain;
if ((myDomain == null) || (myDomain.length == 0)) {
return false;
}
if (myDomain.indexOf("http://") == 0) {
myDomain = myDomain.substring(7);
}
myDomain = myDomain.toLowerCase();
return ref.indexOf(myDomain) == 0;
}
¿Eso no se rompe para 'https'? – Pureferret
@Pureferret - sí, también necesita manejar https. Esto fue escrito en 2010 cuando los sitios web públicos eran casi todos http. –
soluciones que se presentan obras en caso de no subdominio en el sitio web en caso de sub dominio es allí entonces tenemos que comprobar justo antes del dominio propio si algún dominio sub presentan:
document.referrer.replace("http://", '').replace("https://", '').split('/')[0].match(new RegExp(".*" +location.host.replace("www.", '')))
esta solución se agregará. * Antes del dominio para detectar que el subdominio es del mismo dominio.
document.referrer.includes(location.host);
- 1. ¿Cómo puedo determinar si mi convolución es separable?
- 2. file_get_contents() conexión rechazada para mi propio sitio
- 3. Python CMS para mi propio sitio web?
- 4. ¿Cómo puedo determinar si mi texto TextBlock está siendo recortado?
- 5. ¿Cómo puedo definir mi propio SelectableChannel?
- 6. ¿Cómo puedo escribir mi propio programador Hadoop?
- 7. ¿Cómo puedo crear mi propio archivo vsdoc.js para mi JavaScript?
- 8. ¿Cómo puedo determinar si un paquete es RTP/RTCP?
- 9. ¿Cómo puedo bifurcar mi propio repositorio de GitHub?
- 10. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 11. ¿Cómo detectar si IE accede a mi sitio como un sitio de confianza?
- 12. ¿Cómo puedo determinar por qué dirección IP se ha accedido a mi sitio web?
- 13. ¿Cómo puedo implementar "Soy mi propio abuelo" en Prolog?
- 14. ¿Cómo puedo determinar con precisión la ubicación de un visitante en mi sitio web?
- 15. ¿Cómo puedo crear mi propio diseñador de formularios?
- 16. ¿Puedo hacer ingeniería inversa de mi propio dll?
- 17. ¿Cómo puedo determinar si una URL redirige?
- 18. ¿Cómo puedo determinar programáticamente si un sitio IIS está recibiendo solicitudes?
- 19. Buscar todos los procesos secundarios de mi propio proceso .NET/averiguar si un proceso determinado es hijo propio.
- 20. Cómo determinar si KeyCode es carácter imprimible
- 21. cómo determinar si una imagen es explícita
- 22. ¿Cómo determinar si Type es una estructura?
- 23. funcionamiento de mi propio servidor Jabber/XMPP
- 24. ¿Cómo determinar si una secuencia es bitónica?
- 25. ¿Cómo puedo escribir mi propio complemento para Webstorm?
- 26. ¿Cómo puedo determinar si mi objeto ActiveRecord infringe una clave/índice de base de datos única?
- 27. ¿Cómo puedo determinar si mi aplicación de Android tiene pérdida de memoria?
- 28. Desarrollando mi propio CMS
- 29. Cómo escribir mi propio Smarty If-case
- 30. Excel 2003 - ¿Cómo construir mi propio XLA?
Wow, hizo la pregunta, luego respondió en menos de 1 minuto con un enlace a su propio sitio? – Martin
Me imagino que publicar una solución es algo bueno. Estoy bastante seguro de que otros tienen el mismo problema. –
suena poco fiable – hoju