isMethod('OPTIONS')) { return response('', 204, $this->corsHeaders($request)); } $response = $next($request); foreach ($this->corsHeaders($request) as $key => $value) { $response->headers->set($key, $value); } return $response; } private function corsHeaders(Request $request): array { // Get the origin from the request $origin = $request->header('Origin'); // If origin is present, allow it with credentials // Otherwise, use wildcard without credentials if ($origin) { return [ 'Access-Control-Allow-Origin' => $origin, 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS', 'Access-Control-Allow-Headers' => 'Content-Type, X-Requested-With', 'Access-Control-Max-Age' => '86400', 'Access-Control-Allow-Credentials' => 'true', 'Vary' => 'Origin', ]; } return [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS', 'Access-Control-Allow-Headers' => 'Content-Type, X-Requested-With', 'Access-Control-Max-Age' => '86400', ]; } }