'https://api.example.com', 'rate_limiter_driver' => 'file', // o 'memory' // configuration for file-based rate limiter 'rate_limit_storage_dir' => sys_get_temp_dir() . '/api_rate_limit', // configuration for memory-based rate limiter 'rate_limit_requests' => 100, 'rate_limit_window_seconds' => 60, 'cors' => [ 'enabled' => true, // Allowed origins - requests from other origins will be rejected 'allowed_origins' => [ 'http://localhost:3000', // Local development - frontend 'http://localhost:8080', // Local development - alternative port 'https://app.example.com', // Production frontend 'https://admin.example.com', // Production admin panel // 'http://localhost:*', // Allow any port on localhost (not recommended) // '*' // Allow all origins (HIGHLY NOT RECOMMENDED for production) ], // HTTP methods allowed for CORS requests 'allowed_methods' => ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'], // HTTP headers allowed in the request 'allowed_headers' => [ 'Content-Type', 'Authorization', 'X-Requested-With', 'Accept', 'Accept-Language', 'Content-Language', 'X-API-Key', ], // HTTP headers exposed to the client 'exposed_headers' => [ 'Content-Length', 'X-JSON-Response-Code', 'X-Rate-Limit-Limit', 'X-Rate-Limit-Remaining', 'X-Rate-Limit-Reset', ], // Allow credentials (cookies, authorization headers) in cross-origin requests // Only set to true if you understand the security implications 'allow_credentials' => false, // How long (in seconds) the browser can cache the preflight response 'max_age' => 86400, // 24 hours ], ];