嗨,我遇到了同样的问题。看来这是 Passport 中的一个错误,并且有很多开发人员处于同样的情况。我刚刚找到了这个问题的解决方案。我们收到此错误的原因是因为我们进入了 Response 对象middleware
通常是一个实例Illuminate\Http\Response
我们可以使用该方法设置响应头的类header('Header-Key', 'Header-Value')
而 Passport 处理的 Request 将是一个实例Symfony\Component\HttpFoundation\Response
这就是我们收到错误的原因Call to undefined method Symfony\Component\HttpFoundation\Response::header()
下面是我用来解决此错误的代码,现在一切正常。我希望它可以帮助其他开发人员了解如何修复它,然后适应他们的代码。
$response = $next($request);
$IlluminateResponse = 'Illuminate\Http\Response';
$SymfonyResopnse = 'Symfony\Component\HttpFoundation\Response';
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers' => 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers',
];
if($response instanceof $IlluminateResponse) {
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
return $response;
}
if($response instanceof $SymfonyResopnse) {
foreach ($headers as $key => $value) {
$response->headers->set($key, $value);
}
return $response;
}
return $response;
而在我的Kernel.php
protected $middleware = [
\App\Http\Middleware\Cors::class,
// ....
];