document.referrer是document对象的只读属性,返回上一页面的完整URL;若直接访问则为空字符串,使用前需校验非空和有效性,且不可用于关键权限控制。

在 JavaScript 中,BOM(Browser Object Model)里获取页面来源引用地址,主要靠 document.referrer 属性,它返回的是当前页面的上一个页面的完整 URL(即用户从哪个页面跳转过来的)。
什么是 document.referrer?
它是 document 对象的一个只读属性,值为字符串。如果用户是直接输入网址、从书签打开、或通过新标签页直接访问,这个值通常为空字符串("");如果是从其他网页点击链接跳转而来,就会包含那个来源页面的 URL。
如何安全获取并使用 referrer
由于 referrer 可能为空或被浏览器隐私策略(如 Referrer Policy)截断,使用前建议做判断:
- 检查是否非空:
if (document.referrer) - 避免直接解析导致报错:先用
URL构造函数校验再处理 - 注意跨域限制:HTTPS 页面跳转到 HTTP 页面时,referrer 可能被清空(出于安全,默认策略常为
strict-origin-when-cross-origin)
常见用途与简单示例
比如统计来源渠道、做来源白名单跳转校验、或优化落地页文案:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
立即学习“Java免费学习笔记(深入)”;
const referrer = document.referrer;
if (referrer && referrer.includes('google.com')) {
console.log('来自 Google 搜索');
} else if (referrer.includes('baidu.com')) {
console.log('来自百度');
}
注意:不能依赖 referrer 做关键权限控制,因为它可被伪造或缺失,仅适合辅助性逻辑。
补充说明:没有“BOM 方法”直接获取 referrer
referrrer 是 document(DOM)对象的属性,不是 window 或 navigator 等典型 BOM 对象提供的方法。虽然常被归入广义 BOM 使用场景,但技术上属于 DOM 规范。别误以为有类似 window.getReferrer() 这样的 API —— 并不存在。

















