作者:是个success | 来源:互联网 | 2024-11-24 16:12
本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。
文章概览:
- 1、利用cURL获取请求头信息及响应头信息
- 2、PHP中header函数的应用实例
- 3、如何在PHP中获取客户端HTTP头部信息
- 4、使用cURL获取特定URL的头部信息
- 5、PHP中等效于JSP request.getHeader()的方法
利用cURL获取请求头信息及响应头信息
使用cURL库可以轻松地向远程服务器发送请求并接收其响应头。下面是一个示例代码,展示了如何设置请求头并获取响应头:
$oCurl = curl_init();
$header[] = "Content-type: application/x-www-form-urlencoded";
$user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36";
curl_setopt($oCurl, CURLOPT_URL, $sUrl);
curl_setopt($oCurl, CURLOPT_HTTPHEADER, $header);
curl_setopt($oCurl, CURLOPT_HEADER, true);
curl_setopt($oCurl, CURLOPT_NOBODY, true);
curl_setopt($oCurl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCurl, CURLOPT_POST, false);
$sCOntent= curl_exec($oCurl);
$headerSize = curl_getinfo($oCurl, CURLINFO_HEADER_SIZE);
$header = substr($sContent, 0, $headerSize);
curl_close($oCurl);
header函数用于发送原始HTTP头。它必须在任何实际输出之前调用,包括HTML标签、空行或空格。以下是几个使用header函数的例子:
示例一:页面重定向
header("Location: https://www.example.com/");
exit;
示例二:防止页面缓存
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
如何在PHP中获取客户端HTTP头部信息
在PHP中,可以通过$_SERVER超全局变量来获取客户端HTTP头部信息。以下代码展示了如何获取并验证客户端请求的信息:
$dir = $_GET['dir'];
$file = $_GET['file'];
$url = parse_url($_SERVER['HTTP_REFERER']);
if ($url['host'] != $_SERVER['HTTP_HOST']) {
echo "请从正确渠道下载软件。";
exit;
}
if (empty($dir)) $dir = "/";
if (empty($file)) {
echo "未指定要下载的文件!";
exit;
}
$rootdir = "/path/to/download/files";
$realurl = $rootdir . $dir;
chdir($realurl);
if (!file_exists($file)) {
echo "文件不存在,请检查链接是否有效。";
exit;
}
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=$file");
$fp = fopen($file, 'r');
fpassthru($fp);
fclose($fp);
使用cURL获取特定URL的头部信息
若仅需获取URL的头部信息而不关心其主体内容,可以在cURL选项中设置CURLOPT_NOBODY为1,这样cURL将不会输出HTML中的BODY部分。
curl_setopt($curl, CURLOPT_NOBODY, 1);
在PHP中,可以通过$_SERVER超全局数组来获取类似于JSP中request.getHeader()的功能,该数组包含了各种服务器和执行环境信息。例如,$_SERVER['HTTP_USER_AGENT']可以用来获取客户端浏览器信息,$_SERVER['REMOTE_ADDR']可以用来获取客户端IP地址等。