document.referrer 是只读字符串属性,返回用户跳转来源的 url,值为空字符串时表示直接访问或非网页入口;受 referrer policy 影响可能被截断或清空,关键业务应辅以 url 参数或 sessionstorage 等替代方案。

JavaScript 中通过 BOM(Browser Object Model)读取页面的 referrer 来源地址,主要使用 document.referrer 属性。
什么是 document.referrer
document.referrer 是一个只读字符串属性,返回当前页面的来源 URL(即用户从哪个页面跳转过来的)。它来自 HTTP 请求头中的 Referer 字段(注意拼写是 Referer 而非 Referrer),由浏览器自动设置。
如果用户直接在地址栏输入网址、通过书签打开、或从非网页环境(如桌面应用、微信内置浏览器某些场景)进入,该值通常为空字符串("");如果是通过点击链接、表单提交、window.location 跳转等方式进入,则一般能正确获取上一页地址。
基本用法示例
直接访问即可:
console.log(document.referrer); // 输出类似 "https://example.com/page1.html"
实际使用中建议做空值判断:
- 检查是否为空字符串,避免后续解析出错
- 可用
URL构造函数安全解析域名或路径 - 注意:跨域情况下部分浏览器(尤其启用了 Referrer Policy 的)可能截断或清空 referrer
Referrer Policy 对 referrer 的影响
现代浏览器支持 Referrer-Policy 响应头或 <meta> 标签控制 referrer 发送策略。例如:
-
no-referrer→document.referrer恒为空 -
same-origin→ 只有同源跳转才携带 referrer -
strict-origin-when-cross-origin→ 默认策略,跨域时只发源站(不含路径)
可通过页面 HTML 中添加 meta 控制(仅对本站内导航生效):
<meta name="referrer" content="no-referrer">
替代方案(当 referrer 不可靠时)
由于 referrer 易被屏蔽或丢失,关键业务不应完全依赖它。可考虑:
- 跳转时在 URL 中手动携带来源参数,如
?from=dashboard - 使用
sessionStorage在跳转前存入来源标识 - 服务端记录 referer 日志(更可靠,但需后端配合)
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











