header_remove

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

header_remove移除之前设置的头部

描述

header_remove(?string $name = null): void

移除之前使用 header() 设置的 HTTP 头部。

参数

name

要移除的头部名称。当为 null 时,将移除所有之前设置的头部。

注意: 此参数不区分大小写。

返回值

不返回任何值。

变更日志

版本 描述
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 时才可用且可输出。

参见

添加注释

用户贡献的注释 5 个注释

14
Saeed Khamseh
13 年前
如果您想移除有关 PHP 版本的头部信息(x-powered-by),您可以使用

header_remove('x-powered-by');

或者,如果您没有安装 PHP 5.3,您可以使用 "header" 命令执行相同的操作

header('x-powered-by:');

不要忘记字符串末尾的 ":" 字符!
3
匿名
8 年前
expose_php 仅在 php.ini 中!

这将不起作用
ini_set('expose_php',0);

有效
header_remove('x-powered-by');
0
luis dot angelino at laweb dot com dot br
2 个月前
如果您正在使用

#!/usr/local/bin/php

您可以在其末尾添加 "-q",头部将被移除,因为 header_remove 不会移除 "Content-type"

#!/usr/local/bin/php -q
-1
jake at qzdesign dot co dot uk
6 年前
从命令行进程调用时,此函数在传递特定要移除的头部时不会执行任何操作,但在不带参数调用以移除所有头部时,它仍然可以正常工作。

因此,在进行单元测试或在其他一些测试工具中执行时,如果要测试的代码可能会调用 `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
);
?>
-23
J W
9 年前
您应该使用 ini_set("expose_php", 0); 或在 php.ini 中将其设置为 Off,而不是使用此方法来移除 X-Powered-By 头部。
To Top