编辑: 飞鸟 2015-08-24
解决百度统计无法获取https来源的referrer 我们都知道,当我们的页面请求一个js文件、一个cs文件或者点击到其他页面,浏览器一般 都会给这些请求头加上表示来源的 Referrer 字段.

Referrer 在分析用户的来源时非常有用,比如大家熟悉的百度统计里面就利用到 Referrer 信息了.但是遗 憾的是,目前百度统计仅仅支持来源于http页面的referrer头信息;

也就是说,如果你网站是http 的,那么百度统计只能统计到从其他http页面进入到你网站的referrer,而如果是从https页面进 入到你的网站,百度统计目前是无法统计到. 在介绍解决办法之前,我们先来了解Referrer Policies. Referrer Policies 如果想及时了 解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop 目前存在九种Referrer Policies,包括:空字符串、 no-referrer , no-referrer-when- downgrade , same-origin , origin , strict-origin , origin-when-cross-origin , strict-origin-when- cross-origin 以及 unsafe-url: enum ReferrerPolicy { , no-referrer , no-referrer-when-downgrade , same-origin , origin , strict-origin , origin-when-cross-origin , strict-origin-when-cross-origin ,

1 /

5 unsafe-url };

我们这对每种Referrer Policies进行介绍. 空字符串 空字符串表示没有referrer策略.比如我们有一个HTML标签元素 ,而且并没有声明任何的Referrer Policies,这时候的Referrer Policies就是空字符串.默认的空字符串Referrer Policies就等同于no-referrer-when- downgrade. no-referrer 最简单的Referrer Policies就是 no-referrer ;

这种Referrer Policies会导致所有的请求都不带referrer信息.比如如果 https://www.iteblog.com/archives/1929 页面将Referrer Policies设置成 no-referrer ,那么从这个页面转到 https://www.iteblog.com/(或者其他任何页面)都不会发送Referer头信息. no-referrer-when-downgrade 这种策略在从受TLS保护的URL跳转到任何潜在可信的URL以及从不受TLS保护的URL(比如H TTP)跳转到任何URL都会发送完整的URL Referrer 信息. 但是如果从受TLS保护的URL(比如HTTPS)跳转不受信任的URL(比如HTTP),那么Referr er 头将不会带任何的信息.这是大多数浏览器默认的Referrer Policies. 比如:假设 https://www.iteblog.com/archives/1929 页面的Referrer Policies设置成 no- referrer-when-downgrade ,那么从这个页面跳转到任何的 https 页面将会带上值为https://www.iteblog.com/archives/1929 的Referer头信息;

但是如果从那个页面跳转到任何 HTTP 页面,将不会带上任何的Referer头信息.这就是为什么百度统计无法获取到从 HTTPS 跳转到 HTTP 的信息. same-origin 对于同源的链接,会发送referrer,其他的不会.同源意味着域名需要相同,iteblog.com 和idea.iteblog.com 是非同源的. origin

2 /

5 这种Referrer Policies对于任何资源(包括可信和不可信)来说只发送网站的根域名,不发送 完整的url.比如:https://www.iteblog.com/archives/1929 页面的Referrer Policies设置成 origin,那么从这个页面跳转到任何网站将会带上值为https://www.iteblog.com/ 的Referer头信息. strict-origin 我们可以把他看做是 origin 和no-referrer-when-downgrade 的结合体.也就是说,如果从 受TLS保护的URL跳转到任何潜在可信的URL以及从不受TLS保护的URL(比如HTTP)跳转到任何U RL都会发送根域名的 Referrer 头信息. 但是如果从受TLS保护的URL(比如HTTPS)跳转不受信任的URL(比如HTTP),那么Referr er 头将不会带任何的信息.比如https://www.iteblog.com/archives/1929 页面的Referrer Policies设置成 strict-origin ,那么从它跳转到 https://xxx.iteblog.com 将会带上值为https://www.iteblog.com/的Referer头信息;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题