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

Laravel 11升级后/broadcasting/auth返回HTML而非JSON的解决办法

Laravel 11中配置广播路由的Sanctum认证中间件

升级到Laravel 11后,/broadcasting/auth返回HTML的核心原因是:框架默认给广播路由绑定了web中间件,未通过认证时会触发登录页重定向(返回HTML),而SPA场景需要用auth:sanctum中间件来处理认证,返回JSON格式响应。

以下是具体配置步骤:

1. 在bootstrap/app.php中配置广播路由

Laravel 11的应用启动逻辑统一放在bootstrap/app.php,你可以通过应用启动后的回调来覆盖默认的广播路由配置:

首先导入Broadcast门面,然后在应用创建后的booted回调中添加路由配置:

use Illuminate\Support\Facades\Broadcast;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        channels: __DIR__.'/../routes/channels.php',
    )
    // ... 保留原有中间件、异常配置
    ->create()
    ->booted(function () {
        // 为广播路由绑定sanctum认证中间件
        Broadcast::routes(['middleware' => ['auth:sanctum']]);
    });

使用booted回调是为了确保应用完成启动、所有依赖加载完成后再注册路由,避免出现初始化问题。

2. 额外注意事项

  • 确保SPA已正确配置Sanctum的CSRF令牌,请求/broadcasting/auth时必须携带X-XSRF-TOKEN请求头
  • 确认用户已通过Sanctum认证,未认证时会返回JSON格式的401错误(而非HTML),这符合SPA的预期
  • 若仍返回HTML,检查是否有其他全局中间件(如web中间件组中的重定向逻辑)干扰,确保广播路由仅使用auth:sanctum中间件

内容的提问来源于stack exchange,提问作者Eugene B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:53:19