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

如何在PHP/Javascript中获取跨域301/302跳转的源站点域名

实现可行性说明

该需求可以通过PHP或JavaScript实现,两种方案的具体实现逻辑和限制如下:

服务端PHP实现方案

方案1:读取HTTP Referer头

正常301/302跳转场景下,浏览器会在请求目标域名时携带来源页面的Referer头,PHP可以直接读取该字段获取源站域名:

$referer = $_SERVER['HTTP_REFERER'] ?? '';
// 提取Referer中的域名部分即可得到源站域名

注意:该方案存在概率性失败场景,浏览器隐私设置、HTTPS跨协议跳转、自定义安全规则都可能导致Referer头为空

方案2:跳转拼接参数(推荐,100%可用)

修改所有源站的跳转规则,在跳转到目标域名的URL后拼接来源域名参数,例如源站a.com跳转到target.com?from=a.com,PHP直接读取参数即可:

$fromDomain = $_GET['from'] ?? '';

该方案不受Referer限制,准确性最高,Apache环境下可以直接在源站的Rewrite规则中自动拼接参数,不需要修改业务逻辑。

客户端JavaScript实现方案

方案1:读取document.referrer

前端可以直接读取浏览器提供的Referer属性:

const referer = document.referrer;

限制和PHP读取HTTP Referer的逻辑一致,存在为空的可能。

方案2:读取URL查询参数

如果采用跳转拼接参数的方案,前端可以直接解析当前URL的参数获取来源域名:

const fromDomain = new URLSearchParams(window.location.search).get('from');
注意事项
  • 仅依赖Referer的方案无法覆盖所有用户场景,存在小概率获取不到源站域名的情况
  • 跳转拼接参数是兼容性最好、准确性最高的实现方案
  • 如果源站跳转是在Apache层面配置,可以直接修改rewrite规则自动添加来源参数,无需额外开发

内容的提问来源于stack exchange,提问作者the.bastian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:00