Php 响应标头重复(流明)
继续: 在Lumen中使用以下异常处理程序时,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
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
,它会工作。