JS - document.referrer

司徒光霁
2023-12-01

document对象属性

document对象有很多属性,其中有3个与对网页的请求有关的属性,它们分别是URL、domain和referrer。

URL属性包含页面完整的URL,domain属性中只包含页面的域名,而referrer属性中则保存着链接到当前页面的那个页面的URL。

Document.referrer 返回的是一个 URI, 当前页面就是从这个 URI 所代表的页面跳转或打开的。

关于HTTPS请求

如果在一张普通的HTTP页面上点击了HTTPS的链接,那么在https请求头部可以附上Referer信息,之后在HTTPS页面中依然可以用document.referre来获得普通的http页面。

同样,如果是在一张https页面上点击了另一个HTTPS的链接,可以在请求的头部附上Referer信息。

但是如果是从一张https页面点击了http链接,那么很不幸,发送的http请求头里无法包含关于https页面的信息,这可能是出于一种对https页面的保护措施。

意外丢失的情况

  1. 直接在浏览器地址栏中输入地址;
  2. 使用location.reload()刷新(location.href或者location.replace()刷新有信息);
  3. 在微信对话框中,点击链接进入微信自身的浏览器;
  4. 扫码进入QQ或者微信的浏览器;
  5. 从https的网站直接进入一个http协议的网站(Chrome下亲测);
  6. a标签设置rel=“noreferrer”(兼容IE7+);
  7. meta标签来控制不让浏览器发送referer;
  8. 跨域
  9. iframe隐藏

结论

如果你需要通过 document.referrer 采集页面访问来源,最好不要使用 JS 跳转或打开新窗口,也不要使用 meta 跳转。

应用场景

  1. 统计来源,可以统计数量,可以拒绝访问
  2. 返回上一页逻辑判断
  3. 第三方系统跳转,可以跳过登陆页
 类似资料: