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

为什么链接设置noreferrer属性后不生效,referrer仍被追加到URL?

问题排查及原因说明

首先要明确:你配置的<meta name="referrer" content="no-referrer">和a标签的rel=noreferrer属性,作用是控制浏览器发送请求时请求头中的Referer字段,和URL后被追加的referrerUrl查询参数不是同一逻辑,前者的配置不会阻止后者被拼接。

可能的原因及排查方向如下:

  • 目标站点主动追加参数
    你跳转的目标站点自身存在跳转逻辑,会根据访问请求的来源特征(哪怕你请求头不带Referer,也可能通过Cookie、关联会话等方式识别来源),在跳转链路中主动拼接referrerUrl参数,这类行为属于目标站点的服务端/前端逻辑控制,你站的前端配置无法干预。
  • 本站JS脚本动态拼接参数
    检查你站点是否存在全局绑定的a标签点击事件脚本,常见的流量统计、跳转埋点、外链处理类脚本,会在用户点击外链时,动态给a标签的href属性拼接来源相关参数。你可以打开浏览器控制台的元素面板,观察点击链接前后href属性是否发生变化,再在源代码面板搜索referrerUrl关键词,定位是否有相关注入逻辑。
  • rel属性写法错误
    你给出的代码中rel="noopener" or rel="noreferrer"是错误写法,正确的多属性值应该用空格分隔:
<a aria-label="Book" target="_blank" class="book-link" rel="noopener noreferrer" href="<?=$site->book_link()->html()?>">...</a>

不过该配置错误只会影响请求头Referer字段的发送,不会直接导致URL被追加参数。

  • 服务端输出链接时已带参数
    检查你渲染链接的<?=$site->book_link()->html()?>方法返回的原始内容,是否在服务端生成时就已经拼接了相关参数。你可以直接右键查看页面源代码,找到对应a标签,确认href的原始值是否已经包含referrerUrl。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:05