|
Referer,意思拼写起来像个拼写错误——正确的意思英文单词是“Referrer”,少了一个r。意思但HTTP协议头里就这么写的意思,将错就错了几十年。意思 它的意思作用很简单:当你从A网页点击链接跳到B网站时,B网站的意思服务器会收到一个请求头,里面带着A网页的意思地址。这个地址就是意思Referer。好比你去朋友家串门,意思门卫会问你从哪来,意思你报上出处,意思门卫记一笔。意思 这个字段最日常的意思应用是防盗链。我认识一个做图片素材站的意思哥们,他网站上的高清图被另一个小站直接外链调用,流量费全算在他头上。他气得在服务器配置里加了规则:凡是Referer不是自己域名的请求,一律返回一张“图片已过期”的占位图。第二天,那个小站上的图片全裂了。这就是Referer的报复。 它也管统计。你打开公众号文章,底部“阅读原文”跳转到电商页面,电商后台能看到来源是“mp.weixin.qq.com”。市场部的人靠这个判断投放渠道哪个划算。没有Referer,广告费就成了糊涂账。 但隐私问题也出在这。你搜索“脱发怎么办”,搜完点进某个医疗广告网站,那个网站能通过Referer知道你之前搜了什么关键词。更糟的是,如果那个页面有第三方统计脚本,你的浏览习惯就被多个平台串联起来。我试过用隐私模式浏览,清空cookie,但Referer照样出卖你——它藏在请求头里,浏览器设置管不着。 所以浏览器厂商动了手。Chrome和Firefox默认把Referer策略改成“同源时发送完整地址,跨域时只发域名”,甚至干脆不发。这确实挡住了些跟踪,但也误伤了一些正常功能。比如有些论坛靠Referer判断你是不是从搜索引擎来的新用户,好弹欢迎语。现在那功能经常失灵。 还有个冷知识:Referer能泄露你电脑上的本地路径。早期IE浏览器在某些场景下会把“file:///C:/Users/你的名字/...”作为Referer发出去。现在基本修掉了,但老网民的警惕性就是这么练出来的——你永远不知道一个看似无害的字段背后藏着什么。 说到底,Referer像餐厅里的开放式厨房。它让顾客(服务器)看见菜是怎么做出来的(请求从哪来),但同时也意味着你点菜时的一举一动都被后厨看在眼里。你可以选择不看开放式厨房的店,但HTTP协议没给你这个选项——除非你手动关掉所有跨站Referer,然后忍受一堆裂图、失效跳转和“来源不明”的验证码。 它是个老东西,1996年就在RFC 1945里定义了,那时候网页还大多是静态文本。如今Web应用复杂得像座迷宫,但这个头字段依然横在每次请求里,不声不响。你每次点链接,它都在场,只是没人问你愿不愿意。 |