header_remove()
(PHP 5 >= 5.3.0, PHP 7)
删除之前设置的 HTTP 头
说明
header_remove([string $name]): void
删除之前用header()设置的 HTTP 头。
参数
- $name
要移除的头名称。
Note:参数不分大小写。
返回值
没有返回值。
范例
取消指定的头
<?php header("X-Foo: Bar"); header("X-Bar: Baz"); header_remove("X-Foo"); ?>
以上例程的输出类似于:
X-Bar: Baz
取消之前全部指定的头
<?php header("X-Foo: Bar"); header("X-Bar: Baz"); header_remove(); ?>
以上例程的输出类似于:
注释
Caution本函数会删除所有PHP 设置的头,包括 Cookie、Session 和X-Powered-By。
Note:
数据头只会在SAPI支持时得到处理和输出。
参见
header()
发送原生 HTTP 头headers_sent()
检测 HTTP 头是否已经发送
if you want to remove header information about php version (x-powered-by), you can use: header_remove('x-powered-by'); alternatively, if you don't have php 5.3 installed, you can do the same thing using "header" command: header('x-powered-by:'); don't forget the ':' character at the end of the string!
expose_php is php.ini only! this won't work: ini_set('expose_php',0); works: header_remove('x-powered-by');
When called from a command-line process, this function does nothing when passed a specific header to remove, but it does nonetheless work properly when called with no arguments to remove all headers. Thus, when unit-testing or executing in some other test harness, if the code you are testing may call `header_remove()`, with the UOPZ and XDebug extensions loaded, you could use the following in order to more effectively test that the expected headers are set [which you would do by inspecting the array returned by `xdebug_get_headers()` after running the code under test, as `headers_list()` does not work despite the headers actually being stored internally as normal]: <?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); } ); } // This works to remove all headers, just not individual headers. header_remove(); if ($name !== null) { foreach ($headers as $header) { header($header); } } }, true ); ?>
You should ini_set("expose_php", 0); or set it in your php.ini to Off, instead of using this to remove X-Powered-By header.