JavaScript  cookie 跨域访问之广告推广


Posted in Javascript onApril 20, 2016

在实际应用中, 跨域使用天气预报组件可以使用上面的方式实现,另外一种常用的就是显示某些电商的广告,此广告中会滚动您访问过的产品或者关联想推介给你的产品。

比如在某个A网页中显示了两种广告:

某东的广告,里面显示的东西,都是访问过滴,并且加推了相关的东西

JavaScript  cookie 跨域访问之广告推广

某宝的广告,基本一样呈现方式。

JavaScript  cookie 跨域访问之广告推广

当访问某东某宝的商品时,会把信息放到cookie中,呈现时会根据cookie中的商品信息进行呈现。

问题来了。

A网页所在的站点和某东某宝的站点肯定是独立的两个域名,在A网页中访问某东某宝的cookie是拿不到滴,因为不同源,那么

在A网页中的本身去呈现商品信息是做不到而且也不合适。

当然就要通过跨域的方式去呈现商品信息,需要解决的问题就是:

1.跨域服务生成的脚本中不能获取cookie,只能是在跨域的服务端获取cookie

为什么?,跨域服务生成的脚本最终是要在A网页上运行,在跨域服务生成的脚本中访问的cookie只能是A网页所在站点的cookie,那就不对了

2.跨域服务后台能够拿到cookie

答案是肯定的,浏览器只要向某个域名/地址发起请求,就会把其对应的cookie带过去。

那么,我们来实现个简单的demo

demo架构:node.js+express

1.在跨域服务上,可以理解成某电商,提供了一个页面,用来输入商品信息,模拟访问过的东西,输入后保存到cookie中。

页面

JavaScript  cookie 跨域访问之广告推广

代码中就是把输入的东西加上一个过期时间保存进cookie中,当然先简单编个码。

<!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.在跨域服务上,写一段服务端生成脚本的代码,在生成脚本时,把浏览器带过来的cookie中的数据解码取出后拼到脚本中。

这里是通过request对象取出cookie,可能其他平台的方式不一样,但原理都是一样,浏览器是会带过来。

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.在本地网站的A网页中对跨域服务进行脚本请求。

其中,通过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>

页面运行后,像下图一样,就能将访问过的商品信息列出,累似打了一个小广告。

JavaScript  cookie 跨域访问之广告推广

如此,完成。

关于JavaScript  cookie 跨域访问之广告推广 的相关知识就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
用js实现的抽象CSS圆角效果!!
May 03 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 Javascript
javascript 自动填写表单的实现方法
Apr 09 Javascript
js图片轮播效果实现代码
Apr 18 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
原生js实现回复评论功能
Jan 18 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
Vue表情输入组件 微信face表情组件
Feb 11 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 #Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 #Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 #Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 #Javascript
javascript实现简单计算器效果【推荐】
Apr 19 #Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 #Javascript
jQuery实现选项联动轮播效果【附实例】
Apr 19 #Javascript
You might like
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
动态加载iframe
2006/06/16 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
javascript工具库代码
2012/03/29 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python移位运算的实现
2019/07/15 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python列表切片常用操作实例解析
2020/03/10 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
在职证明书模板
2015/06/15 职场文书
小学中队委竞选稿
2015/11/20 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书