Maison >interface Web >js tutoriel >Cookie JavaScript accès inter-domaines publicité promotion_javascript compétences

Cookie JavaScript accès inter-domaines publicité promotion_javascript compétences

WBOY
WBOYoriginal
2016-05-16 15:04:392078parcourir

Dans les applications pratiques, l'utilisation inter-domaines des composants de prévisions météorologiques peut être mise en œuvre en utilisant la méthode ci-dessus. Une autre méthode courante consiste à afficher des publicités de certaines sociétés de commerce électronique. Cette publicité fera défiler les produits que vous avez visités ou les associations. vous souhaitez recommander votre produit.

Par exemple, deux types de publicités sont affichées sur une page web A :

Certaines choses affichées dans les publicités de Dongdong ont été visitées par Didi et des choses associées ont été recommandées

Les publicités d'un certain produit sont fondamentalement présentées de la même manière.

Lors de l'accès à un produit de Dongmoubao, les informations seront placées dans le cookie et la présentation sera basée sur les informations sur le produit dans le cookie.

Voici le problème.

Le site où se trouve la page web A et le site de Dongbao doivent être deux noms de domaine indépendants. Lorsque vous accédez au cookie de Dongbao sur la page web A, vous ne pouvez pas l'obtenir car ils proviennent de sources différentes, alors <.>

Il est impossible et inapproprié de présenter des informations sur le produit sur la page Web A elle-même.


Bien sûr, les informations sur les produits doivent être présentées de manière inter-domaines. Les problèmes à résoudre sont :


1. Les cookies ne peuvent pas être obtenus à partir de scripts générés par des services inter-domaines. Les cookies ne peuvent être obtenus qu'à partir de serveurs inter-domaines


Pourquoi ? , le script généré par le service cross-domain sera finalement exécuté sur la page web A. Le cookie accessible dans le script généré par le service cross-domain ne peut être que le cookie du site où se trouve la page web A, ce qui est faux


2. L'arrière-plan du service inter-domaines peut obtenir des cookies


La réponse est oui. Tant que le navigateur fait une requête sur un certain nom de domaine/adresse, il apportera le cookie correspondant.


Alors, implémentons une démo simple


Architecture de démonstration : node.js+express


1. Dans les services inter-domaines, cela peut être compris comme une société de commerce électronique qui fournit une page pour saisir des informations sur le produit, simuler les éléments qui ont été visités et les enregistrer dans un cookie après la saisie.


Page


Le code consiste à enregistrer l'entrée plus un délai d'expiration dans le cookie. Bien sûr, codez-le simplement en premier.


<!DOCTYPE html>
<html>
<head>
<title>setCookie</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<h1>看过的商品</h1>
<div>
<span>商品1</span><input id="s1">
</div>
<p></p>
<div>
<span>商品2</span><input id="s2">
</div>
<p></p>
<div>
<span>商品3</span><input id="s3">
</div>
<p></p>
<div>
<span>商品4</span><input id="s4">
</div>
<p></p>
<div>
<input id="b" type="button" value="保存进cookie" onclick="saveInCookie();">
</div>
<script>
function saveInCookie(){
//所有商品信息
var eleS1=document.getElementById('s1');
var eleS2=document.getElementById('s2');
var eleS3=document.getElementById('s3');
var eleS4=document.getElementById('s4');
//生成24小时后过期的参数
var date=new Date();
var expiresMSeconds=3*24*3600*1000;
date.setTime(date.getTime()+expiresMSeconds);
//商品信息全部设置到cookie中
document.cookie='s1='+escape(eleS1.value)+";expires="+date.toGMTString();
document.cookie='s2='+escape(eleS2.value)+";expires="+date.toGMTString();
document.cookie='s3='+escape(eleS3.value)+";expires="+date.toGMTString();
document.cookie='s4='+escape(eleS4.value)+";expires="+date.toGMTString();
alert(document.cookie);
}
</script>
</body>
</html> 
2. Sur le service inter-domaines, écrivez un morceau de code pour générer un script côté serveur. Lors de la génération du script, décodez les données du cookie apporté par le navigateur et placez-les dans le script.


Ici, le cookie est récupéré via l'objet de requête. La méthode peut être différente sur d'autres plateformes, mais le principe est le même, et le navigateur le récupérera.


router.get('/ad', function (req, res) {
//拼接一JS字符串,完成向html页面中输出html标记
printCookies(req.cookies);
var s = 'document.write(\'<div style="background-color:red;width:10rem;height:10rem">商品广告';
//将cookie中所有的商品取出,拼到脚本字符串中
for (var p in req.cookies) {
s += '<div>' + unescape(req.cookies[p]) + '</div>';
}
s+='</div>\');';
console.log(s);
res.setHeader('content-type', 'text/javascirpt;charset=utf-8');
res.write(s);
res.end();
});
function printCookies(cookies) {
console.log('******cookies******');
for (var p in cookies) {
console.log(p + '=' + unescape(cookies[p]));
}
console.log('*******************');
} 
3. Faites une demande de script au service inter-domaines dans la page Web A du site Web local.


Parmi eux, l'adresse du script fournie sur le service cross-domain est référencée via la balise script.

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" href="/stylesheets/style.css"></head>
<body>
<script src="http://localhost:3001/ad"></script>
<h1>航班信息</h1>
<h4>航班号:MU532</h4>
<h4>起飞:北京</h4>
<h4>抵达:上海</h4>
</body>
</html> 
Une fois la page exécutée, comme le montre l'image ci-dessous, les informations sur le produit visité seront répertoriées, ce qui ressemble à une petite publicité.


Ça y est, c'est fait.


Ceci sont toutes les connaissances pertinentes sur l'accès inter-domaines aux cookies JavaScript et la promotion publicitaire. J'espère que cela sera utile à tout le monde !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn