如何在PHP中删除特定的http响应头

如何在PHP中删除特定的http响应头,php,Php,您正在多次使用相同的名称设置某些特定的标题。比如说 header("Set-Cookie: Foo=bar"); header("Set-Cookie: Bar=foo"); header("Set-Cookie: Baz=bob"); 之后,您只想删除“设置Cookie:Bar”,而不删除其他设置。 如何做到这一点 header\u remove在这里不起作用,因为您可以指定名称“Set Cookie”,但不能指定Cookie“Set Cookie:Foo”。这不好,但它可以工作: 解决方案

您正在多次使用相同的名称设置某些特定的标题。比如说

header("Set-Cookie: Foo=bar");
header("Set-Cookie: Bar=foo");
header("Set-Cookie: Baz=bob");
之后,您只想删除“设置Cookie:Bar”,而不删除其他设置。 如何做到这一点


header\u remove
在这里不起作用,因为您可以指定名称“Set Cookie”,但不能指定Cookie“Set Cookie:Foo”。

这不好,但它可以工作:

解决方案是复制所有标题、全部删除、筛选并再次创建

$headers = headers_list();
header_remove(); // removes all headers
foreach($headers as $h) {
    if (!preg_match("/^Set-Cookie: Bar$/", $h)) {
        header($h);
    }
}