You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 框架下如何在 middleware 中获取请求 URL 的 HTTP 状态码

Laravel 中间件获取响应HTTP状态码实现方案

你需要在后置中间件逻辑中获取状态码,HTTP状态码是服务端处理请求生成响应后才附带的参数,前置中间件阶段请求还未被应用处理,不存在响应对象,无法获取状态码。
具体实现代码如下:

  1. 打开你的中间件文件 app/Http/Middleware/ExampleMiddleware.php,按以下结构编写逻辑:
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ExampleMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // 前置逻辑区域:此处在请求进入控制器前执行,无法获取状态码

        // 先将请求传入应用层处理,拿到生成的响应对象
        $response = $next($request);

        // 后置逻辑区域:直接从响应实例中获取状态码
        $statusCode = $response->status();

        // 此处编写拿到状态码后的业务逻辑即可,例如日志记录、统一逻辑判断等
        // 示例代码:\Log::debug('请求响应状态码', ['code' => $statusCode]);

        return $response;
    }
}

注意事项

  • Laravel 6.x及以上版本都可以直接使用$response->status()方法获取状态码,更低版本可以替换为$response->getStatusCode(),二者效果完全一致
  • 异常场景下如果要正常获取状态码,需要确保异常已经被Laravel异常处理器转为响应对象返回,否则可以在异常处理器中补充对应逻辑同步获取状态值

内容的提问来源于stack exchange,提问作者Behzad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:54:03