method(); if (is_string($method) && strtoupper($method) === 'OPTIONS') { $path = $request->path(); $path = is_string($path) ? trim($path, '/') : ''; $isApiOrAdmin = $path !== '' && (str_starts_with($path, 'api') || str_starts_with($path, 'admin')); if ($isApiOrAdmin) { $origin = $request->header('origin'); $origin = is_array($origin) ? ($origin[0] ?? '') : (is_string($origin) ? trim($origin) : ''); if ($origin === '') { $origin = '*'; } $headers = [ 'Access-Control-Allow-Origin' => $origin, 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Max-Age' => '1800', 'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, PATCH, OPTIONS', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, batoken, ba-user-token, think-lang', ]; $connection->send(new Response(204, $headers, '')); return; } } parent::onMessage($connection, $request); } }