让前端飞

从广告的精准投放了解cookie跨域

2016-05-21  本文已影响1764人  RichardBillion

精准的广告投放

当我们打开一个网站时,有很大的机会可以看到一段广告,而且这个竟然还是我们先前浏览过的相关物品。如打开人人影视,就可以看到这个:

Paste_Image.png

先了解个概念:

广告联盟:集合中小网络媒体资源,通过联盟平台帮助广告主实现广告投放,并进行数据监测统计。几乎每家互联网巨头都有那么个联盟。

比如百度联盟,它给你一段代码嵌入到你的网页,然后用户浏览你的网站的时候,就能看到百度根据你先前的搜索记录分发过来的广告,这也就做到了精准投放。

那么技术上的大体流程是如何的呢?

以百度联盟为例:使用百度的时候,会把你的此次搜索保存到cookie中,并且分配这个浏览器唯一可标识的ID号,当打开人人影视的时候,该页的广告模块就向第三方也就是广告服务商的服务器去请求百度保存在浏览器的cookie,然后就可以知道你最近浏览或者搜索过哪些商品,然后就返回给你相关的广告。从当前域去请求百度的cookie就涉及到cookie的跨域。

另个人见解:这段广告代码只能访问它所在联盟的平台的cookie,也就是不能随心所欲的。另外一段广告通常是以iframe形式嵌入到某个正常网页中的,也就是这广告和正文其实彼此互不影响,也互不关心,所以承载广告的这个网页并不能获取到这个广告平台的cookie,因此如果没有恶意(违法行为),这种cookie信息其实是不会被网页获取的。

cookie跨域

关于跨域,也可以看看我先前写的文章:最常用的两种跨域解决方案

cookie和其他资源的跨域类似,都是在一定条件下可以跨域(同样的可以跨二级域名,只要在创建cookie的时候指明Domain是二级的)。只是浏览器对于cookie有特殊的限制。

IE8(后来的版本中有的是添加到受信任站点后可用)由于安全策略,限制页面不保存第三方cookie,所以大部分采用P3P方案(大都是简单的添加P3P header信息)。

P3P(Platform for Privacy Preference),隐私设置平台规范。用来向浏览器声明自己的隐私政策,比如网站是否搜集访问者的个人信息,设置cookie的用途等等。

具备 P3P 能力的浏览器具有一些可供您选择的默认选项。 或者您也可以通过回答问题的方式(例如您愿意分享哪些数据、愿意接受哪些类型的 Cookie 文件)自定义您的设置。 当您在 Web 浏览时,这个软件会判断您的隐私权偏好选项是否与网站的数据收集做法匹配。然后浏览器根据设置决定在该条件下是否接受网站的cookie。

像仅仅需要实现单点登录这样的功能来说,直接设置HTTP header是最简单的方式。如PHP中

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

但是大多浏览器关于cookie 的设置都有禁止第三方cookie的选项,总不能强制用户都去修改这个选项吧,所以P3P这个方案也是有不管用的时候的。

推荐方案

淘宝转天猫的方案就可以避免浏览器的限制:

登陆www.taobao.com后,转到www.tmall.com也可以实现自动登陆,基本原理:通过在淘宝的服务器端提供一个可以获取当前域下所有cookie的请求地址,然后将其合并成js代码,然后在tmall中采用jsonp的方式去请求加载该js片段,就像一般资源的跨域那样,从而实现了cookie 的跨域访问。

【参考资料】

https://www.zhihu.com/question/21470620
http://www.iteye.com/topic/1000776
http://www.lovelucy.info/ie-accept-third-party-cookie.html
http://www.jianshu.com/p/e9340bd34b7e

上一篇下一篇

猜你喜欢

热点阅读