首页 > 解决方案 > Laravel 8.x 在抛出 NotFoundHttpException 时返回状态码 200 而不是 404

问题描述

从 7.x 升级到 Laravel 8.9 后,Laravel 在请求不存在的模型时返回错误的状态码。响应正文本身包含预期的错误响应,但状态代码为 200。以下是相应的控制器代码:

public function findOne($eventId)
{
    $event = Event::withMailRecords()->withContacts()->withContingents()->findOrFail($eventId);

    return new EventResource($event);
}

我只在使用启动服务器时得到错误的状态代码php artisan serve,然后执行我们的前端测试来查询服务器。在我们的 Laravel HTTP 测试中,一切正常。此外,该问题仅出现在我们的 bitbucket ci 管道中。即使在我们的管道映像中执行测试,本地一切正常。

我看不到任何可能导致这种行为的环境差异。

标签: phplaravel

解决方案


也许这不是您的问题的根源,但是您确定在任何“<?php”标记之前没有空格,或者您没有使用像 UTF8 这样的编码和 BOM 已经发送标头?


推荐阅读