Tester CORS
Testa e debugga le politiche CORS (Cross-Origin Resource Sharing) e le richieste API
Cos'è CORS? CORS (Cross-Origin Resource Sharing) è un meccanismo che consente ai browser web di effettuare richieste cross-origin (dominio, protocollo o porta diversi) da script in esecuzione nel browser.
Intestazioni CORS chiave
Access-Control-Allow-Origin
: Specifica quali origini sono autorizzate ad accedere alla risorsaAccess-Control-Allow-Methods
: Specifica quali metodi HTTP sono consentitiAccess-Control-Allow-Headers
: Specifica quali intestazioni HTTP possono essere utilizzateAccess-Control-Allow-Credentials
: Specifica se includere le credenziali (cookie, autenticazione HTTP)
💡 Soluzioni CORS
Soluzioni lato server
1. Express.js (Node.js):
const cors = require('cors'); app.use(cors({ origin: 'https://example.com', methods: ['GET', 'POST'], credentials: true }));
2. Spring Boot (Java):
@CrossOrigin(origins = "https://example.com") @RestController public class ApiController { ... }
Soluzioni lato client
1. Utilizzo di un server proxy:
// package.json (React) "proxy": "http://localhost:3001"
2. JSONP (solo GET):
// Soluzione limitata ma semplice fetch('api?callback=handleResponse')
🔧 Configurazione CORS per ambiente
Next.js
// next.config.js module.exports = { async headers() { return [ { source: '/api/:path*', headers: [ { key: 'Access-Control-Allow-Origin', value: '*' } ] } ] } }
Nginx
location /api { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; }
Apache
# .htaccess Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
Configurazione CORS per ambiente
Scenari di test
- • Richiesta semplice: Testa il comportamento CORS di base con richieste GET
- • Richiesta preflight: Testa le richieste preflight con i metodi PUT/DELETE
- • Intestazioni personalizzate: Testa le richieste con l'intestazione Authorization
- • Credenziali: Testa le richieste con i cookie
- • Gestione degli errori: Testa gli scenari di errore
Considerazioni sulla sicurezza
- • Fai attenzione all'uso del carattere jolly (*) a causa dei rischi per la sicurezza
- • Principio del privilegio minimo: consenti solo le origini e i metodi necessari
- • Restrizioni delle credenziali: consenti solo origini specifiche quando includi le credenziali
- • Revisione regolare: rivedi e aggiorna periodicamente le politiche CORS
Suggerimenti per il debug CORS
Strumenti per sviluppatori del browser
- • Controlla le richieste OPTIONS nella scheda Rete
- • Cerca i messaggi di errore CORS nella Console
- • Verifica le intestazioni CORS nelle intestazioni di risposta
Strumenti utili
- • CORS Tester (questo strumento)
- • Postman (per il test API)
- • comando curl (per il test diretto del server)