PHP headers_list 函数
最后修改于 2025 年 4 月 4 日
PHP 的 headers_list
函数用于检索将要发送到客户端的响应标头列表。它对于调试和标头检查非常有用。
基本定义
headers_list
返回一个准备发送的标头数组。这些标头包括 PHP 生成的和使用 header() 手动设置的标头。
语法:headers_list(): array
。返回一个数字索引数组。标头仅在输出缓冲开始后或在输出之前可用。
基本标头检查
此示例展示了如何检索和显示所有响应标头。
basic_headers.php
<?php declare(strict_types=1); header('Content-Type: text/html; charset=utf-8'); header('X-Powered-By: PHP/8.1'); $headers = headers_list(); print_r($headers);
这将显示为响应设置的所有标头,包括 Content-Type。输出显示了系统生成和自定义标头。
检查特定标头
此示例演示了如何检查是否已设置特定标头。
check_specific_header.php
<?php declare(strict_types=1); header('Cache-Control: no-cache'); function has_header(string $name): bool { foreach (headers_list() as $header) { if (stripos($header, $name) === 0) { return true; } } return false; } echo has_header('Cache-Control') ? 'Cache header set' : 'No cache header';
这将检查响应标头中是否存在 Cache-Control 标头。该函数搜索以指定名称开头的标头。
标头修改检测
此示例展示了如何检测标头是否已被修改。
header_modification.php
<?php declare(strict_types=1); $initial_headers = headers_list(); header('X-Custom-Header: Value'); header_remove('X-Powered-By'); $current_headers = headers_list(); $modified = $initial_headers != $current_headers; echo $modified ? 'Headers changed' : 'Headers unchanged';
这将比较修改前后的标头以检测更改。对于需要验证标头修改的中间件很有用。
Content-Type 验证
此示例展示了如何在输出前验证 Content-Type 标头。
content_type_check.php
<?php declare(strict_types=1); function validate_content_type(string $expected): bool { foreach (headers_list() as $header) { if (stripos($header, 'Content-Type:') === 0) { return stripos($header, $expected) !== false; } } return false; } header('Content-Type: application/json'); echo validate_content_type('json') ? 'Valid' : 'Invalid';
这将确保响应的 Content-Type 在发送前与预期匹配。在需要特定格式的 API 实现中特别有用。
标头调试工具
此示例创建了一个用于开发的简单标头调试工具。
header_debugger.php
<?php declare(strict_types=1); header('X-Debug: Enabled'); header('Cache-Control: no-store'); function debug_headers(): string { $output = "<h3>Response Headers</h3><ul>"; foreach (headers_list() as $header) { $output .= "<li>" . htmlspecialchars($header) . "</li>"; } return $output . "</ul>"; } echo debug_headers();
这将为调试目的创建一个响应标头的 HTML 列表。在开发过程中有助于验证标头配置。
最佳实践
- 时机: 在任何输出之前调用以获取完整的标头
- 性能: 在生产环境中避免过度调用
- 安全: 不要将敏感标头暴露给最终用户
- 测试: 用于单元测试标头配置
来源
本教程通过实际示例介绍了 PHP 的 headers_list
函数,用于 PHP 应用程序中的标头检查、验证和调试。
作者
列出 所有 PHP 网络函数。