如果您想移除关于PHP版本的报头信息(x-powered-by),您可以使用
header_remove('x-powered-by');
或者,如果您没有安装PHP 5.3,您可以使用“header”命令执行相同的操作
header('x-powered-by:');
不要忘记字符串末尾的“:”字符!
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
header_remove — 移除之前设置的报头
不返回任何值。
版本 | 描述 |
---|---|
8.0.0 |
name 现在可以为空。 |
示例 #1 移除特定报头。
<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove("X-Foo");
?>
以上示例将输出类似于以下内容
X-Bar: Baz
示例 #2 移除所有之前设置的报头。
<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove();
?>
以上示例将输出类似于以下内容
此函数将移除PHP设置的 *所有* 报头,包括Cookie、会话和X-Powered-By
报头。
注意:
只有在使用支持报头的SAPI时,才能访问和输出报头。
如果您想移除关于PHP版本的报头信息(x-powered-by),您可以使用
header_remove('x-powered-by');
或者,如果您没有安装PHP 5.3,您可以使用“header”命令执行相同的操作
header('x-powered-by:');
不要忘记字符串末尾的“:”字符!
如果您使用的是
#!/usr/local/bin/php
您可以在其末尾添加“-q”,报头将被移除,因为header_remove不会移除“Content-type”
#!/usr/local/bin/php -q
从命令行进程调用时,此函数在传递特定要移除的报头时什么也不做,但是当调用时不带任何参数以移除所有报头时,它仍然可以正常工作。
因此,在单元测试或在某些其他测试工具中执行时,如果要测试的代码可能会调用`header_remove()`,并且加载了UOPZ和XDebug扩展,则可以使用以下代码更有效地测试是否设置了预期的报头[您可以通过在运行测试代码后检查`xdebug_get_headers()`返回的数组来执行此操作,因为尽管报头实际上是正常存储在内部的,但`headers_list()`不起作用]
<?php
uopz_set_return(
'header_remove',
function($name = null) {
if ($name !== null) {
$pattern = '/^' . preg_quote($name, '/') . ':/i';
$headers = array_filter(
xdebug_get_headers(),
function($header) use($pattern) {
return !preg_match($pattern, $header);
}
);
}
// 这可以移除所有报头,只是不能移除单个报头。
header_remove();
if ($name !== null) {
foreach ($headers as $header) {
header($header);
}
}
},
true
);
?>