Php 响应标头重复(流明)

Php 响应标头重复(流明),php,http-headers,lumen,Php,Http Headers,Lumen,继续: 在Lumen中使用以下异常处理程序时,X-Powered-By标头被复制,即使$replace(标头()方法的第三个参数)默认为true(即使手动设置,如下所示,也不起作用) 公共函数呈现($request,Exception$e) { if($e instanceof\Symfony\Component\HttpKernel\Exception\NotFoundHttpException) { 返回响应(视图('not-found'),404)->标题('X-Powered-By',e

继续:

在Lumen中使用以下异常处理程序时,
X-Powered-By
标头被复制,即使
$replace
标头()
方法的第三个参数)默认为true(即使手动设置,如下所示,也不起作用)

公共函数呈现($request,Exception$e)
{
if($e instanceof\Symfony\Component\HttpKernel\Exception\NotFoundHttpException)
{
返回响应(视图('not-found'),404)->标题('X-Powered-By',env('APP\u NAME')。“/”。env('APP\u VER'),true);
}
返回父::render($e);
}
响应标题:

未找到HTTP/1.0 404 日期:2015年5月23日星期六08:05:13 GMT 服务器:Apache X-Powered-By:PHP/5.6.3 缓存控制:没有缓存 X-Powered-By:AppName/1.0.0 连接:关闭 内容类型:text/html;字符集=UTF-8 唯一有效的方法是在调用
->header
之前使用
header\u remove('X-Powered-By')
。我不必这样做,因为
$replace
参数已相应设置

有没有更好的方法来防止X-Powered-By标题的重复?

设置

expose_php = Off expose_php=Off 在php.ini中,以删除

X-Powered-By: PHP/5.6.3 X-Powered-By:PHP/5.6.3

我无法使用方法链接实现此功能,但是,如果我这样做:

header('X-Powered-By: '.env('APP_NAME')."/".env('APP_VER'));
return response(view('not-found'), 404);
。。。它按你的愿望工作。但请注意,每个PHP手册的标题中只有一个参数:

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
可选的replace参数指示是否应删除标头 替换以前的类似标题,或添加相同标题的第二个标题 类型。默认情况下,它将替换,但如果您将FALSE作为第二个 参数可以强制使用同一类型的多个标头

资料来源:

。。。也就是说,它不是像str_replace那样的“用那个替换这个”类型的项目。如果您在第一个参数中键入的字符串类似于另一个标题项,它将用您自动键入的内容替换它


旁注:我还尝试将响应函数的第三个参数设置为包含X-Powered-By标头的数组,但没有效果。

我知道我可以这样做,但为什么不替换原始标头?它肯定是在我的
header()
调用之前发送的吗?如果我使用
.htaccess
,它会工作。