안녕하세요. 저는 같은 문제에 직면했습니다. 그것은 여권에 오류가있는 것 같아 많은 개발자가 같은 상황에 있습니다. 방금이 문제에 대한 해결책을 찾았습니다. 이 오류가 발생하는 이유는 middleware
에있는 응답 객체가 보통 Illuminate\Http\Response
클래스의 인스턴스이기 때문에 응답 헤더를 header('Header-Key', 'Header-Value')
메서드를 사용하여 설정할 수있는 반면 Passport에서 처리하는 요청은 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;
와의
내 우리가 서로 librairies의 버전을 볼 수 있도록
Kernel.php
protected $middleware = [
\App\Http\Middleware\Cors::class,
// ....
];
당신이 당신의'composer.json' 파일을 공유 할 수 있습니까? –
다음을 시도해보십시오 :'$ response-> headers-> set ($ key, $ value)' –
여권이 CORS를 취급한다는 인상하에 있었습니까? – Joe