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 相关文章推荐
jquery 可排列的表实现代码
Nov 13 Javascript
浅谈javascript的数据类型检测
Jul 10 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
js整数字符串转换为金额类型数据(示例代码)
Dec 26 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
JavaScript日期选择功能示例
Jan 16 Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
javascript自定义右键菜单插件
Dec 16 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 Javascript
解决vant title-active-color与title-inactive-color不生效问题
Nov 03 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单例模式
2014/11/25 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
js 事件小结 表格区别
2007/08/13 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python机器学习实战之K均值聚类
2017/12/20 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python学习开发mock接口
2019/04/28 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
什么造成了Java里面的异常
2016/04/24 面试题
办加油卡单位介绍信
2014/01/09 职场文书
python中redis包操作数据库的教程
2022/04/19 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
SQL Server中锁的用法
2022/05/20 SQL Server