CORS (Cross-Origin Resource Sharing)
Invoicetronic API supporta CORS, il meccanismo standard del browser che consente a pagine web di effettuare richieste HTTP verso domini diversi da quello di origine. Questo significa che puoi chiamare l'API direttamente da JavaScript in esecuzione nel browser, ad esempio da una single-page application (SPA), un portale web o qualsiasi altra applicazione frontend.
Come funziona
Quando un browser effettua una richiesta cross-origin verso l'API, invia prima una richiesta preflight (metodo OPTIONS) per verificare che il server consenta la chiamata. L'API risponde con gli header CORS appropriati e il browser procede con la richiesta vera e propria.
Questo processo è completamente trasparente: non devi fare nulla di speciale nel tuo codice. Il browser gestisce automaticamente il preflight e l'API lo autorizza.
Esposizione della API key
Attenzione
Quando chiami l'API da JavaScript nel browser, la tua API key è inevitabilmente esposta. Chiunque può vederla ispezionando il codice sorgente della pagina o le richieste di rete tramite i DevTools del browser. Non esiste modo di nascondere una API key in un'applicazione frontend.
Questo è un rischio concreto: una chiave esposta può essere copiata e usata al di fuori della tua applicazione, per accedere ai dati del tuo account o eseguire operazioni non autorizzate.
Approccio consigliato: usa un backend
Best practice
Quando possibile, chiama l'API dal tuo backend, non dal browser. Questo è l'approccio più sicuro in assoluto: la chiave rimane sul server e non è mai esposta al client.
Una qualsiasi API key esposta nel browser — anche una chiave con restrizioni di sola lettura — resta un vettore di attacco finché non ti accorgi che è stata esfiltrata e la revochi. Nel frattempo, un attaccante può accedere ai dati consentiti dalla chiave. Un backend elimina completamente questo rischio.
L'architettura consigliata è a due livelli:
- Frontend (browser) — comunica con il tuo backend, non direttamente con l'API Invoicetronic
- Backend (server) — chiama l'API con la chiave primaria, al sicuro dal client
Se non puoi usare un backend
Se la tua applicazione non dispone di un backend (ad esempio una SPA statica o un sito generato), puoi chiamare l'API direttamente dal browser. In questo caso, è indispensabile usare una chiave con restrizioni dedicata, configurata con i permessi minimi necessari:
- Sola lettura se l'applicazione deve solo consultare dati (fatture, log, stato)
- Invio se deve anche inviare fatture
- Restrizione per azienda per limitare l'accesso ai soli documenti pertinenti
Le chiavi con restrizioni riducono il danno in caso di compromissione, ma non lo eliminano: finché la chiave è attiva, chi la possiede può accedere ai dati consentiti. Monitora l'uso delle tue chiavi e revocale tempestivamente in caso di sospetta compromissione.
Non usare mai la chiave primaria nel browser
La chiave primaria ha accesso completo a tutte le risorse del tuo account. Esporla in un'applicazione frontend è un rischio grave. Crea sempre una chiave con restrizioni dedicata e riserva la chiave primaria per il backend.