略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: header_remove

2024-12-22

header_remove

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

header_remove删除之前设置的 HTTP 头

说明

header_remove(string $name = ?): void

删除之前用 header() 设置的 HTTP 头。

参数

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、Session 和 X-Powered-By

注意:

数据头只会在SAPI支持时得到处理和输出。

参见

add a noteadd a note

User Contributed Notes 4 notes

up
13
Saeed Khamseh
11 years ago
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!
up
2
jake at qzdesign dot co dot uk
4 years ago
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
);
?>
up
4
Anonymous
6 years ago
expose_php is php.ini only!

this won't work:
ini_set('expose_php',0);

works:
header_remove('x-powered-by');
up
-10
J W
7 years ago
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.

官方地址:https://www.php.net/manual/en/function.header-remove.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3