L'importance du référent
Il y a un en-tête de référence dans la demande HTTP, qui indique la source du trafic actuel. Par exemple, cliquez sur un lien sur www.sina.com.cn/sports/ pour atteindre la page d'accueil de CCTV.com, puis le référent est www.sina.com.cn/sports/. Dans JavaScript, nous pouvons obtenir les mêmes informations via Document.Referrer. Grâce à ces informations, nous pouvons savoir quel canal les visiteurs viennent sur la page actuelle. Ceci est très important pour l'analyse Web.
Cependant, pour diverses raisons, parfois le référent lu dans JavaScript est une chaîne vide. Résumons quelles circonstances seront perdantes.
Modifier l'objet d'emplacement pour la navigation de page
L'objet de localisation est un objet très pratique pour la navigation de page. Parce qu'il vous permet de ne changer qu'une partie de l'URL. Par exemple, passez du nom de domaine CN au nom de domaine com, d'autres pièces restent inchangées:
La copie de code est la suivante:
window.location.hostname = "example.com";
Cependant, la modification de la méthode de navigation par page par la navigation de page entraînera la perte de références sous IE.
Retourner la chaîne vide sous IE5.5 +
Chrome 3.0+, Firefox 3.5, Opera9.6, Safari 3.2.2 Retour à la page Web source normalement
Ouvrez une nouvelle fenêtre par fenêtre.
Exemple:
La copie de code est la suivante:
<a href = "#" onclick = "window.open ('http://www.google.com')"> Accédez à Google </a>
Cliquez sur ce lien ouvrira le site Web Google dans une nouvelle fenêtre.
La copie de code est la suivante:
javascript: alert (document.referrer)
Résultats des tests:
Retourner la chaîne vide sous IE5.5 +
Chrome 3.0+, Firefox 3.5, Opera9.6, Safari 3.2.2 Retour à la page Web source normalement
S'il est redirigé de cette manière sous le même nom de domaine, nous pouvons accéder à l'objet Windoww.Openner pour obtenir les informations de références perdues. Le code est le suivant:
La copie de code est la suivante:
<script type = "text / javascript">
var référent = document.Referrer;
if (! référentiel) {
essayer {
if (window.opener) {
// Si le domaine transversal sous IE, une exception d'autorisation sera lancée
// Safari et Chrome n'ont pas de propriétés
REFORRER = Window.Openner.Location.Href;
}
}
catch (e) {}
}
</cript>
Si vous traversez le domaine, vous serez impuissant ~
Faites glisser la souris pour ouvrir une nouvelle fenêtre
La traînée et la chute de la souris sont une habitude de l'utilisateur très populaire de nos jours. Cependant, les pages se sont ouvertes de cette manière essentiellement, tous les référents sont perdus. De plus, dans ce cas, il est impossible d'utiliser la méthode Window.Opener pour obtenir le référent perdu.
Testé:
Maxthon 2.5.2, plugin Firegestture pour Firefox, Chrome 3.0+, Opera 9.6, Safari 3.2.
Cliquez sur le lien interne de Flash
Lorsque vous cliquez sur Flash pour atteindre un autre site Web, la situation de Referger est plus désordonnée.
Dans IE, la valeur lue le document.Referrer du client JavaScript est vide, mais si vous utilisez le logiciel de surveillance du trafic pour le regarder, vous constaterez qu'en fait, l'en-tête du référence dans la demande HTTP a une valeur. Cela peut être un bogue dans l'implémentation IE. Dans le même temps, cette valeur pointe vers l'adresse du fichier flash, pas l'adresse de la page Web source.
Après avoir cliqué sur Flash sous Chrome 4.0 pour atteindre une nouvelle fenêtre, REFORRER pointe également vers l'adresse du fichier flash, et non l'adresse de la page Web source.
Chrome 3.0 et Safari 3.2 sont les mêmes, et les deux perdront des informations de référence.
Opéra, comme Firefox, la valeur de Referger est l'adresse de la page Web source.
Https saute à http
Lorsque vous passez d'un site Web HTTPS à un site Web HTTP, le navigateur n'enverra pas de référentiel. Le comportement de ces principaux navigateurs est le même.
Par exemple, lorsque nous utilisons Google Reader ou Gmail sous HTTPS, nous cliquons sur un lien pour aller sur un autre site Web.
L'impact de la perte de références sur la surveillance du trafic publicitaire
Si Referger est perdu, Web Analytics perdra une partie très importante des informations, en particulier pour le trafic publicitaire, il est impossible de connaître la source réelle. À l'heure actuelle, de nombreux sites Web en Chine qui utilisent la publicité Google Adsense utilisent Window.Open pour ouvrir des liens publicitaires, donc le référence sera perdu sous IE. . De nombreux outils de statistiques de trafic classeront donc cette partie du trafic comme «trafic direct», ce qui équivaut à des utilisateurs qui tapent directement l'URL.
Dans ce cas, il est nécessaire de permettre au plagiar publicitaire d'ajouter des paramètres de suivi spécifiques à l'URL de la page de destination lors de la description de l'annonce.
Par exemple, si une annonce flash est cliquée, l'URL pour arriver à http://www.example.com/ afin de surveiller de quel canal provient, nous pouvons modifier l'URL d'atterrissage de cet endroit et le changer en http: // www.example.com/?src=sina, similaire à cette méthode, puis utilisez du code JavaScript pour extraire ce paramètre SRC dans la page de destination, afin que vous puissiez obtenir les informations source de l'annonce.
Lorsque vous servez Google AdWords, le système d'arrière-plan a une option de "balise automatique". et backend AdWords. De cette façon, vous pouvez savoir à quelle campagne le trafic publicitaire correspond, quels mots clés de source d'annonces et d'annonces et autres informations. Il est en fait similaire à l'idée mentionnée ci-dessus. C'est juste que Google a automatiquement apporté des modifications URL pour vous.
Solution pour vider référente sous IE
Si la méthode Window.Location.href est utilisée pour sauter dans IE, la valeur du référence est vide. Et si le référence saute dans la balise, le référence ne sera pas vide. Ainsi, le code suivant peut résoudre ce problème, c'est-à-dire
La copie de code est la suivante:
fonction gotourl (url) {
if (window.vbarray) {
var getoLink = document.CreateElement ('A');
Gotolink .href = URL;
Document.Body.ApendChild (Gotolink);
Gotolink .Click ();
}autre{
window.location.href = url;
}
}
Interdire les navigateurs de ne pas apporter de référente lors de l'accès aux liens
Lorsque nous cliquez sur un lien sur un site Web pour entrer une autre page, le navigateur ajoutera une valeur de référence à l'en-tête pour identifier la page source de cette visite. Mais ce type de logo peut divulguer la confidentialité des utilisateurs.
• Utilisez la solution HTML5 nouvellement ajoutée, utilisez REL = "NOREFERRER" pour déclarer l'attribut de connexion en tant que noreferrer.
• Utilisez une page intermédiaire, mais envoyez réellement un référent, tel que l'utilisation de la direction de connexion de Google, noreferrer.js.
• Utilisez le protocole JavaScript pour lier le transfert, consultez les instructions ci-dessous.
Une nouvelle fenêtre est équivalente à Target = "_ Blank":
La copie de code est la suivante:
fonction open_window (lien) {
var arg = '/u003cscript/u003Location.replace("'+Link+'")/U003C/Script/u003e';
window.open ('javascript: window.name;', arg);
}
</code>
Tourner une connexion est équivalent à cible = "_ self":
La copie de code est la suivante:
redirection de fonction (lien) {
var arg = '/ u003cscript / u003etop.location.replace ("' + link + '") / u003c / script / u003e';
var iframe = document.createElement ('iframe');
iframe.src = 'javascript: window.name;';
iframe.name = arg;
document.body.appendChild (iframe);
}
</code>