|
|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在网站运维和前端开发中,你一定经常听到 Referer(来源页) 这个词。它通常用于 防盗链、统计分析、跳转追踪、安全策略 等场景。那么 Referer 到底是什么?它对我们有什么意义?本文一次性讲清楚。
一、Referer 的定义
Referer 是 HTTP 请求头的一部分,用来标识“当前请求从哪个页面跳转过来”。
当用户点击一个链接、加载图片、加载脚本、跳转页面时,浏览器会自动把当前页面的 URL 写入 Referer 字段内,然后发送给目标服务器。
示例:
当网页 A 中引用图片 B:
<img src="https://img.example.com/a.jpg"> 浏览器请求 a.jpg 时会携带:
也就是说:
Referer 告诉服务器:这次资源请求来自于哪里。
二、Referer 能做什么?
1. 防盗链(最常见场景)
很多 CDN、对象存储(OSS)、图片服务器会通过 Referer 判断:
- 来请求资源的域名是不是我允许的?
- 是白名单?还是黑名单?
- 是我自己的网站?还是别的网站盗链我资源?
例如:
你可以设置:
2. 统计来源
网站分析工具根据 Referer 做:
- 流量来源统计(百度来的?谷歌来的?微信来的?)
- 推广渠道识别
- 导流效果监控
例如 Referer 是:
https://www.google.com/search?q=xxx 你就知道用户来自 Google 搜索。
3. 安全策略
Referer 可以用于安全校验,例如:
- 判断请求是不是通过正常页面流程触发
- 防止 CSRF(跨站请求伪造)
- 检测非法跳转
不过注意,Referer 可以被伪造,所以不能作为唯一安全判断依据。
三、Referer 可能为空(非常重要)
Referer 不是一定存在,浏览器在某些条件下不会发送 Referer,例如:
- 从 HTTPS 跳转到 HTTP(为了保护隐私)
- 页面设置了 Referrer-Policy(如 no-referrer)
- 直接输入网址访问
- 右键"在新标签页打开"
- 用某些浏览器隐私模式
- 请求被中间代理清洗掉头信息
因此 不能完全依赖 Referer 做精准安全判断。
四、Referrer(正确拼写) vs Referer(错误拼写)
正确英文单词应是 Referrer,但 HTTP 标准里拼错成了 Referer。
结果是:
- 全世界所有 Web 服务器、浏览器都延续这个“错别字”
- HTTP 规范也保持“Referer”作为正式字段名字
所以:
HTTP 头:Referer
新标准(Referrer Policy):Referrer-Policy
两个词并存,但都在使用。
五、Referer 在防盗链中的应用示例
白名单写法示例(以 CDN 为例)
- www.example.com
- *.example.com
规则意思:
- 允许主域名
- 允许所有子域名
- 开启防盗链后,其他域名引用你的图片就会被阻止。
黑名单示例
表示拒绝这些网站引用你的资源。
六、如何查看 Referer?
你可以用浏览器开发者模式查看:
打开 F12 → Network
点击任意请求
左侧"Request Headers"里会看到 Referer
七、总结
| 内容 | 说明 | | Referer 是什么? | 请求来源页面的 URL | | 浏览器自动携带? | 是 | | 常见用途 | 防盗链、流量统计、安全校验 | | 可以为空? | 是(常见情况) | | 为什么拼错? | HTTP 规范历史遗留问题 | | 能被伪造? | 可以 | 一句话总结:
Referer 是网站判断“你从哪里来”的依据,也是防盗链最依赖的来源信息。
|
|