调用PHP中ajax函数时如何获取当前页面URL而非ajax接口URL
AJAX请求PHP端获取原访问页面URL的实现方法
有两种常用的可落地方案,具体实现如下:
方案1:前端主动传递原页面URL(最可靠)
前端发起AJAX请求时,直接读取当前页面的完整URL作为参数传给后端接口,示例代码如下:
// 原生JS示例 const xhr = new XMLHttpRequest() // 读取当前页面URL const currentPageUrl = window.location.href const interfaceUrl = 'http://localhost.com/productpage/get_product_det/654645fgdfdg?origin_url=' + encodeURIComponent(currentPageUrl) xhr.open('GET', interfaceUrl) xhr.send()
PHP接口端直接获取对应参数即可:
// 对参数做解码处理 $originPageUrl = urldecode($_GET['origin_url']);
方案2:读取请求头Referer字段(无需前端改代码)
浏览器默认会在AJAX请求头中携带Referer字段,值为发起请求的原页面地址,PHP可以直接读取系统超全局变量获取:
$originPageUrl = $_SERVER['HTTP_REFERER'] ?? '';
该方案有以下局限性:
- 部分用户会通过浏览器配置禁用Referer上报,或者代理服务器会修改/清空该字段,存在获取不到值的概率
- 站点如果存在HTTPS跳HTTP的场景,浏览器会自动清空Referer字段,该场景无法使用
内容的提问来源于stack exchange,提问作者Teresa
相关产品推荐
相关产品推荐

