NotFoundHttpException
是 Laravel 框架中的一个异常,通常在路由无法找到对应资源时抛出。正常情况下,这个异常应该导致服务器返回 HTTP 状态码 404(Not Found),表示请求的资源不存在。如果在 Laravel 8.x 中遇到返回状态代码 200 而不是 404 的情况,可能是由于以下几个原因:
App\Exceptions\Handler
类来处理所有异常。如果这个类中的 render
方法被错误地修改,可能会导致 NotFoundHttpException
不按预期返回 404 状态码。打开 app/Exceptions/Handler.php
文件,确保 render
方法正确处理 NotFoundHttpException
:
public function render($request, Throwable $exception)
{
if ($exception instanceof NotFoundHttpException) {
return response()->view('errors.404', [], 404);
}
return parent::render($request, $exception);
}
检查所有应用的中间件,确保没有中间件在捕获 NotFoundHttpException
后修改响应状态码。
如果在控制器中有自定义的异常处理逻辑,确保没有将状态码设置为 200:
try {
// ... 一些可能抛出 NotFoundHttpException 的代码 ...
} catch (NotFoundHttpException $e) {
return response()->view('errors.404', [], 404);
}
这种情况通常出现在需要自定义错误页面或者对异常处理有特殊需求的应用中。通过上述方法,可以确保即使在自定义逻辑中,也能保持正确的 HTTP 状态码。
通过检查和调整上述可能涉及的配置和代码,应该能够解决 Laravel 8.x 中 NotFoundHttpException
返回状态码 200 的问题。
领取专属 10元无门槛券
手把手带您无忧上云