【问题标题】:Laravel: why every route is executed twice?Laravel:为什么每条路线都执行两次?
【发布时间】:2021-06-19 23:02:10
【问题描述】:

在我的 laravel 应用中,我注意到每条路由都执行了两次,但不知道为什么

例如:

Route::get('called_twice', function () {
   dump('---');
});

两次返回字符串'---'

编辑:

为了追溯问题的根源,我在文件中放了一个转储

src/Illuminate/Foundation/Http/Kernel.php

protected function sendRequestThroughRouter($request)
{
    $this->app->instance('request', $request);

    Facade::clearResolvedInstance('request');

    $this->bootstrap();
dump('kernel');
    return (new Pipeline($this->app))
                ->send($request)
                ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
                ->then($this->dispatchToRouter());
}

以及文件构造函数中的另一个转储

src/Illuminate/Pipeline/Pipeline.php

    public function __construct(Container $container = null)
{
    dump('pipeline');
    $this->container = $container;
}

我明白了:

Pipeline 类被多次调用

Laravel 6.8.0

【问题讨论】:

  • 它是在哪里定义的?
  • 在 routes/api.php 文件中定义
  • 你是否在使用 WAMP
  • @AlecJoy 不,正在运行 php artisan serve

标签: laravel


【解决方案1】:

我认为 $next($request) 可能在中间件中被调用了两次。原因是响应在返回之前通过每个中间件(管道)传递。 所以如果 $next($request) 在一个中间件中被调用两次,那么所有管道都会被再次调用是正常的。

【讨论】:

    【解决方案2】:

    在主人那里找到了我的。有一个脚本导致页面在后台重新加载。

    我建立了一个只有管理员访问权限的小柜台,然后将其抽出。归结为一个脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      相关资源
      最近更新 更多