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 risorsa
- Access-Control-Allow-Methods: Specifica quali metodi HTTP sono consentiti
- Access-Control-Allow-Headers: Specifica quali intestazioni HTTP possono essere utilizzate
- Access-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)