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

如何通过PHP Curl仅提取并打印响应头中的Location字段?

修改PHP脚本仅输出HTTP响应的Location字段

这里提供两种可靠的修改方案,你可以根据需求选择:

方案一:使用cURL头部回调函数(高效推荐)

这种方法通过cURL的CURLOPT_HEADERFUNCTION回调逐行处理响应头部,直接捕获Location字段,无需处理完整的头部内容:

<?php
// 设置目标URL
$url = "http://example.com/ch1";

// 初始化cURL会话
$ch = curl_init($url);

// 设置自定义请求头
$headers = array();
$headers[] = 'R-Auth: e3MVCXtgCXtnD3ITN3NhcyIzfXRhN3Jncntgf3tlc3s=';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// 仅请求响应头部,不获取响应体
curl_setopt($ch, CURLOPT_NOBODY, true);
// 禁止自动跟随重定向,确保能捕获原始Location头
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

// 初始化变量存储Location值
$location = '';
// 设置头部处理回调函数
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($ch, $header) use (&$location) {
    $trimmedHeader = trim($header);
    // 匹配Location字段行
    if (strpos($trimmedHeader, 'Location:') === 0) {
        // 提取Location的值
        $location = trim(substr($trimmedHeader, strlen('Location:')));
    }
    // 必须返回当前头部行的长度,否则cURL会报错
    return strlen($header);
});

// 执行cURL会话
curl_exec($ch);

// 关闭cURL会话
curl_close($ch);

// 输出捕获到的Location字段
echo $location;
?>

方案二:捕获完整头部后解析(直观易读)

这种方法先获取完整的响应头部,再通过字符串分割和遍历提取Location字段:

<?php
// 设置目标URL
$url = "http://example.com/ch1";

// 初始化cURL会话
$ch = curl_init($url);

// 设置自定义请求头
$headers = array();
$headers[] = 'R-Auth: e3MVCXtgCXtnD3ITN3NhcyIzfXRhN3Jncntgf3tlc3s=';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// 仅获取响应头部,不输出内容
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
// 将响应内容返回给变量,而非直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 获取完整的响应头部字符串
$responseHeader = curl_exec($ch);

// 关闭cURL会话
curl_close($ch);

// 解析头部提取Location字段
$location = '';
// 按换行符分割头部内容
$headerLines = explode("\n", $responseHeader);
foreach ($headerLines as $line) {
    $trimmedLine = trim($line);
    // 匹配Location字段行
    if (strpos($trimmedLine, 'Location:') === 0) {
        $location = trim(substr($trimmedLine, strlen('Location:')));
        break; // 找到后立即退出循环,提升效率
    }
}

// 输出Location字段
echo $location;
?>

关键修改说明

  • CURLOPT_NOBODY: 设置为true后,cURL只会请求HTTP响应头部,不获取响应体,减少数据传输量。
  • CURLOPT_FOLLOWLOCATION: 设置为false,避免cURL自动跟随重定向,确保能获取到原始的Location跳转地址。
  • CURLOPT_RETURNTRANSFER: 设置为true时,响应内容会返回给变量,而非直接输出到页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:00:58