在 Lumen 中使用中间件设置响应 headers
Setting response headers with middleware in Lumen
我正在尝试使用 Lumen micro-framework 中的 AfterMiddleware
设置 header (X-Powered-By
)。不幸的是,header 没有被设置。假设甚至没有处理中间件(如下所示)。
AfterMiddleware.php
<?php namespace App\Http\Middleware;
use Closure;
class AfterMiddleware {
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('X-Powered-By', env('APP_NAME') . '/' . env('APP_VER'));
return $response;
}
}
bootstrap/app.php中间件setter
$app->middleware([
'App\Http\Middleware\AfterMiddleware'
]);
我是不是遗漏了什么?
明白了:中间件不会处理异常(404,在我的例子中)。我的临时解决方案是直接在异常处理程序中将 header 添加到响应中。
if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
return response(view('not-found'), 404)->header('X-Powered-By', env('APP_NAME')."/".env('APP_VER'));
}
不幸的是,header 被复制了,即使 $replace
默认为 true。将为此打开一个新问题。
我正在尝试使用 Lumen micro-framework 中的 AfterMiddleware
设置 header (X-Powered-By
)。不幸的是,header 没有被设置。假设甚至没有处理中间件(如下所示)。
AfterMiddleware.php
<?php namespace App\Http\Middleware;
use Closure;
class AfterMiddleware {
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('X-Powered-By', env('APP_NAME') . '/' . env('APP_VER'));
return $response;
}
}
bootstrap/app.php中间件setter
$app->middleware([
'App\Http\Middleware\AfterMiddleware'
]);
我是不是遗漏了什么?
明白了:中间件不会处理异常(404,在我的例子中)。我的临时解决方案是直接在异常处理程序中将 header 添加到响应中。
if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
return response(view('not-found'), 404)->header('X-Powered-By', env('APP_NAME')."/".env('APP_VER'));
}
不幸的是,header 被复制了,即使 $replace
默认为 true。将为此打开一个新问题。