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 提交和设置表单的值
Dec 19 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
JS apply用法总结和使用场景实例分析
Mar 14 Javascript
JS可断点续传文件上传实现代码解析
Jul 30 Javascript
解决vue页面刷新,数据丢失的问题
Nov 24 Vue.js
JS相册图片抖动放大展示效果的示例代码
Jan 29 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
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python中turtle作图示例
2017/11/15 Python
Python求出0~100以内的所有素数
2018/01/23 Python
python如何让类支持比较运算
2018/03/20 Python
Python对List中的元素排序的方法
2018/04/01 Python
基于python log取对数详解
2018/06/08 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
物业工作计划书
2014/01/10 职场文书
一年级数学教学反思
2014/02/01 职场文书
店长职务说明书
2014/02/04 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
建房协议书
2014/04/11 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
Java实现带图形界面的聊天程序
2022/06/10 Java/Android