美文网首页
跨域问题-laravel-passport

跨域问题-laravel-passport

作者: 可望不可j | 来源:发表于2021-04-29 13:32 被阅读0次

(用于个人学习,不喜勿喷)

解决Call to undefined method Symfony\Component\HttpFoundation\Response::header()的方法

因为:laravel-passport实际上使用的是Symfony\Component\HttpFoundation\Response类来响应消息的,而普通的http请求,则是通过Illuminate\Http\Response类来响应消息的。

$response= $next($request);

$IlluminateResponse= 'Illuminate\Http\Response';

$SymfonyResopnse= 'Symfony\Component\HttpFoundation\Response';

$origin= $request->server('HTTP_ORIGIN')? $request->server('HTTP_ORIGIN'): '*';

$headers= [

'Access-Control-Allow-Origin' => $origin,

'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, OPTIONS, DELETE',

'Access-Control-Allow-Headers' => 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN, User-Agent, Host, Accept-Encoding, Connection, Content-Length',

'Access-Control-Expose-Headers'=>'Authorization',

'Access-Control-Allow-Credentials'=>'true',

'Access-Control-Max-Age'=>'3600'

];

if ($response instanceof $IlluminateResponse) {

foreach ($headersas $key=> $value) {

$response->header($key, $value);

}

return $response;

}

if ($response instanceof $SymfonyResopnse) {

foreach ($headersas $key=> $value) {

$response->headers->set($key, $value);

}

return $response;

}

return $response;

相关文章

网友评论

      本文标题:跨域问题-laravel-passport

      本文链接:https://www.haomeiwen.com/subject/kmfqgktx.html