You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取来自外部网站的带完整路径的referrer来源地址

你遇到的document.referrer跨域场景下无法获取完整路径的问题,本质是由浏览器的Referrer Policy(引荐来源政策) 控制的。

当前绝大多数浏览器默认启用strict-origin-when-cross-origin策略,规则如下:

  • 同站跳转时,发送包含路径、查询参数在内的完整Referrer信息
  • 跨站跳转时,仅发送来源站点的源信息(协议+域名+端口,不包含路径、查询参数)
  • HTTPS站点跳转到HTTP站点时,不发送任何Referrer信息

包括Google在内的多数大型站点还会主动配置更严格的Referrer Policy,避免用户的访问路径、搜索关键词等敏感信息泄露给第三方站点,因此你默认无法获取这类外站跳转的完整来源路径。

解决方案

场景1:可以控制来源跳转站点的配置

如果跳转来源站点归你管理,可以通过以下配置允许跨域发送完整Referrer:

  1. 全局配置站点响应头,添加:
    Referrer-Policy: no-referrer-when-downgrade
    
    该规则下HTTPS到HTTPS的跨域跳转将发送完整Referrer,HTTPS到HTTP的跳转不会发送Referrer,兼顾安全性与业务需求。
  2. 针对单个跳转链接单独配置,在<a>标签上添加referrerpolicy属性:
    <a href="https://example.com" referrerpolicy="no-referrer-when-downgrade">跳转示例</a>
    

场景2:无法控制来源跳转站点的配置

如果你没有权限修改来源站点的配置,没有任何手段可以强制浏览器发送完整的跨域Referrer,这是浏览器和来源站点共同遵循的安全规则,目标站点无权篡改。
如果是合作方站点跳转场景,可以协商让对方在跳转的目标URL中拼接编码后的来源路径作为查询参数,你在本站直接读取URL参数即可获取完整来源路径,示例:
跳转目标地址格式:https://example.com?from=https%3A%2F%2Fpartner.com%2Fpath
读取代码:

const fromPath = decodeURIComponent(new URL(location.href).searchParams.get('from'))

内容的提问来源于stack exchange,提问作者ejade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:45:03