nelmio_cors:
    defaults:
        origin_regex: true
        # Chrome / Edge : preflight "Private Network Access" (ex. front localhost → API 127.0.0.1)
        allow_private_network: true
        allow_origin:
            - '^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
            - '^https?://192\.168\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]+)?$'
            - '^https?://10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]+)?$'
            - '^https?://172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]+)?$'
            # Fronts production Sherlook (www optionnel) — gardés pour lisibilité / historique
            - '^https?://(www\.)?admin\.sherlook\.fr(:[0-9]+)?$'
            - '^https://(www\.)?dashboard\.sherlook\.fr(:[0-9]+)?$'
            - '^https://(www\.)?newsite\.sherlook\.fr(:[0-9]+)?$'
            # Couverture large : tout sous-domaine sherlook.fr en HTTPS (super-admin, fronts, préprod, etc.)
            # Si le preflight OPTIONS n’a toujours pas d’en-têtes CORS : vérifier nginx / CDN (réponse d’erreur sans passer par Symfony).
            - '^https://([a-zA-Z0-9-]+\.)*sherlook\.fr(:[0-9]+)?$'
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        # Évite les 400 preflight si le navigateur envoie d’autres Access-Control-Request-Headers (Axios, etc.)
        allow_headers: ['*']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/': null
