Verificatore CORS

Verifica la configurazione Cross-Origin Resource Sharing (CORS) per qualsiasi URL. Ispeziona le intestazioni di risposta Access-Control-*, esegui una richiesta preflight (OPTIONS) opzionale con un Origin/metodo/intestazioni personalizzati e rileva configurazioni errate comuni come wildcard + credenziali, Vary: Origin mancante o allow-headers troppo ampi.

Loading…

Informazioni Controllore CORS

Incolla un URL API o di pagina e verifica se i browser consentiranno richieste cross-origin. Questo strumento analizza le intestazioni di risposta CORS, può eseguire un controllo preflight (OPTIONS) realistico ed evidenzia configurazioni rischiose o errate (come "*" con credenziali, Vary: Origin mancante o allow-methods/allow-headers deboli).

Funzionalità

  • Ispezione intestazioni CORS per qualsiasi URL pubblico (Access-Control-* e intestazioni correlate).
  • Simulazione preflight opzionale (OPTIONS) con Origin, metodo richiesta e intestazioni richiesta personalizzati.
  • Segui reindirizzamenti (fino a 10) per validare l'endpoint finale che i browser raggiungono effettivamente.
  • Vista intestazioni grezze per trasparenza completa e debug.
  • Rilevamenti + scheda punteggio con filtro "solo problemi" per triage rapido.
  • Analisi Vary per rilevare Vary: Origin mancante e altre insidie CORS relative alla cache.
  • Esporta risultati come report JSON e PDF per audit, ticket e documentazione.
  • Raccomandazioni integrate per problemi comuni: wildcard+credenziali, riflessione Origin, Origin null, allow-methods/allow-headers mancanti, max-age mancante e allow-headers troppo ampi.

🧭 Come usare for cors-checker

1

Inserisci l'URL di destinazione

Incolla l'endpoint che desideri testare (es., https://api.example.com/resource).

2

Imposta l'Origin da cui stai testando

Inserisci l'Origin della tua app frontend (schema + host), es., https://app.example.com. Questo è il valore che i browser inviano nell'intestazione Origin.

3

Scegli una modalità di controllo

Usa Auto (consigliato) per analizzare sia le intestazioni di risposta che il comportamento preflight. Usa Richiesta semplice se vuoi specificamente uno scenario non preflight, o Solo preflight per eseguire controlli OPTIONS.

4

Configura i dettagli preflight (se applicabile)

Abilita "Esegui Preflight (OPTIONS)" e imposta Metodo Richiesta più Intestazioni Richiesta (separate da virgola) per simulare il comportamento preflight reale del browser (es., autorizzazione, content-type). Attiva "Considera credenziali" se il tuo caso d'uso include cookie o intestazioni di autenticazione.

5

Rivedi i rilevamenti ed esporta

Controlla i rilevamenti/la scheda punteggio e i dettagli dell'analisi CORS. Attiva "Mostra Intestazioni Grezze" durante il debug. Esporta JSON/PDF per condivisione o archiviazione negli audit.

Specifiche tecniche

Modello di richiesta

Lo strumento ispeziona le intestazioni CORS per un URL di destinazione e può opzionalmente eseguire una richiesta preflight (OPTIONS) utilizzando l'Origin, il metodo e le intestazioni richieste fornite. È supportato il seguito dei reindirizzamenti.

ImpostazioneComportamentoPredefinito
Modalità di ControlloAutomatica, Richiesta semplice, o Solo PreflightAutomatica
Esegui Preflight (OPTIONS)Se abilitato, esegue una simulazione di preflight OPTIONSAbilitato
OrigineValore dell'header Origin utilizzato per l'analisi/preflighthttps://example.com
Metodo di RichiestaValore Access-Control-Request-Method per il preflightGET
Header di RichiestaAccess-Control-Request-Headers (separati da virgola) per il preflightVuoto
Segui ReindirizzamentiSegue la catena di reindirizzamenti fino all'URL finaleAbilitato
Reindirizzamenti MassimiLimite di reindirizzamenti per prevenire loop10 (intervallo 0–20)
TimeoutLimite di timeout della richiesta15000 ms
User-AgentIdentifica l'user agent della richiestaEncode64Bot/1.0 (+https://encode64.com)
Reti privateBlocca l'accesso agli intervalli di rete privati per sicurezzaDisabilitato (reti private non consentite)

Header analizzati (set CORS principale)

L'analizzatore si concentra sugli header di risposta e richiesta CORS standard utilizzati dai browser e dai controlli di preflight.

HeaderScopo
Access-Control-Allow-OriginQuali Origini sono consentite
Access-Control-Allow-CredentialsSe sono consentiti cookie/credenziali (richiede un'origine non wildcard)
Access-Control-Allow-MethodsMetodi consentiti per richieste cross-origin (importante per il preflight)
Access-Control-Allow-HeadersHeader consentiti (importante per Authorization e header personalizzati)
Access-Control-Expose-HeadersQuali header sono leggibili dal JS del browser
Access-Control-Max-AgeQuanto a lungo il preflight può essere memorizzato nella cache del browser
VaryVariazione della chiave di cache (es. Vary: Origin) per prevenire avvelenamento/mescolamento della cache
Origin / Access-Control-Request-*Utilizzato per simulare il comportamento del preflight

Euristiche (problemi comuni di CORS segnalati)

I risultati si basano su controlli pratici e orientati alla sicurezza per rilevare configurazioni CORS rotte o rischiose.

ControlloPerché è importante
Wildcard + credenzialiAccess-Control-Allow-Origin: * non può essere usato con le credenziali; i browser bloccheranno o il comportamento è insicuro
Manca Vary: OriginSe le risposte variano per Origin ma non sono memorizzate correttamente, le cache condivise possono mescolare risposte tra siti
Riflessione dell'OriginRipetere ciecamente l'Origin può consentire involontariamente origini non attendibili
Avvisi su Origin nulloOrigin: null può apparire in iframe sandbox o contesti file; consentirlo è spesso rischioso
Mancano Allow-Methods / Allow-HeadersIl preflight potrebbe fallire se il server non consente esplicitamente metodo/header
Allow-Headers troppo ampioConsentire troppi header può ampliare la superficie di attacco
Manca Max-AgeIl preflight potrebbe essere eseguito troppo frequentemente, aggiungendo latenza
CORS è un meccanismo di applicazione del browser. I server possono comunque essere raggiungibili cross-origin tramite client non browser; considera CORS come parte di una postura di sicurezza più ampia, non l'unico controllo.

Riga di comando

Usa questi comandi per riprodurre il comportamento CORS e preflight dal tuo terminale. Sono utili per il debug e la verifica di quanto riportato dallo strumento.

macOS / Linux

Controlla gli header CORS per una richiesta normale (simula un Origin del browser)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Cerca Access-Control-Allow-Origin, Access-Control-Allow-Credentials e Vary.

Esegui una richiesta di preflight OPTIONS (metodo + header)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

Il preflight deve restituire i corretti Access-Control-Allow-Methods e Access-Control-Allow-Headers affinché il browser proceda.

Segui i reindirizzamenti durante il controllo degli header

curl -iL -H "Origin: https://example.com" https://api.example.com

Utile quando gli endpoint reindirizzano a un host diverso che ha regole CORS differenti.

Windows (PowerShell)

Ispeziona gli header di risposta con un header Origin

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Mostra gli header Access-Control-* se presenti.

Se il tuo frontend utilizza cookie o autenticazione, evita CORS permissivi. Preferisci un elenco esplicito di origini attendibili e includi Vary: Origin quando le risposte differiscono per origine.

Casi d'uso

Debug di un errore del browser "CORS bloccato" nel frontend

Quando fetch/XHR fallisce con un errore CORS, verifica se il server restituisce gli header Access-Control-* richiesti per la tua Origin e il tipo di richiesta.

  • Conferma che Access-Control-Allow-Origin corrisponda all'origine della tua app
  • Se utilizzi cookie/autenticazione, controlla che Access-Control-Allow-Credentials sia true (e che l'origine non sia un carattere jolly)
  • Assicurati che Vary: Origin sia presente quando si consentono più origini

Convalida della preflight per Authorization / header personalizzati

La maggior parte delle chiamate API autenticate attiva una preflight a causa di Authorization o tipi di contenuto non semplici. Questo strumento aiuta a garantire che le risposte OPTIONS consentano il metodo e gli header richiesti.

  • Verifica che Access-Control-Allow-Methods includa POST/PUT/PATCH/DELETE secondo necessità
  • Verifica che Access-Control-Allow-Headers includa authorization, content-type e gli header X-* richiesti
  • Rileva la mancanza di allow-methods/allow-headers prima del deploy

Revisione della sicurezza della politica CORS

Le configurazioni errate di CORS possono esporre involontariamente API private a siti malevoli (specialmente con credenziali). Utilizza i risultati per individuare pattern ad alto rischio.

  • Rileva l'origine con carattere jolly combinata con credenziali
  • Rileva pattern di origine riflessi che consentono siti arbitrari
  • Segnala il permesso di Origin: null quando non previsto

Migliora le prestazioni memorizzando in cache la preflight

Le richieste preflight aggiungono round-trip e latenza. Un Max-Age corretto può ridurre i controlli preflight ripetuti per API stabili.

  • Verifica che Access-Control-Max-Age sia presente quando appropriato
  • Riduci le chiamate OPTIONS ripetute per traffico API frequente

❓ Frequently Asked Questions

Cos'è il CORS in termini semplici?

CORS (Cross-Origin Resource Sharing) è un meccanismo di sicurezza del browser che controlla se una pagina web da un'origine (schema + host + porta) può leggere risposte da un'altra origine. Si basa su specifici header di risposta Access-Control-*.

Quando un browser invia una richiesta di preflight (OPTIONS)?

Una preflight viene inviata quando la richiesta non è "semplice", ad esempio quando si utilizzano metodi come POST con determinati tipi di contenuto o quando si inviano header come Authorization o header personalizzati X-*. Il browser controlla i permessi tramite OPTIONS prima di inviare la richiesta reale.

Perché "Access-Control-Allow-Origin: *" è pericoloso con le credenziali?

I browser richiedono un'origine esplicita quando sono coinvolte credenziali. L'uso del carattere jolly con credenziali non è valido per le richieste con credenziali e indica una configurazione rischiosa. Preferisci un elenco esplicito di origini attendibili.

Perché ho bisogno di Vary: Origin?

Se il tuo server restituisce valori Access-Control-Allow-Origin diversi a seconda dell'origine della richiesta, le cache devono variare in base all'origine per evitare di servire una risposta destinata a un sito a un altro. Vary: Origin aiuta a prevenire la miscelazione delle cache e i relativi problemi di sicurezza.

CORS può proteggere la mia API da client non browser?

No. CORS viene applicato dai browser. Script eseguiti al di fuori di un browser (server, curl, app mobile) possono chiamare la tua API indipendentemente da CORS. Usa autenticazione, autorizzazione e limitazione della frequenza per un controllo di accesso reale.

Cosa devo inserire in "Request Headers" quando testo il preflight?

Elenca gli header che il tuo frontend invierà, separati da virgola (es. authorization, content-type, x-request-id). Questo simula Access-Control-Request-Headers e verifica se il server li permette.

È sicuro incollare URL qui?

Lo strumento effettua richieste lato server all'URL fornito e blocca i target di rete privata. Evita di includere segreti negli URL (come token nelle query string) e preferisci endpoint pubblici di cui ti fidi.

Pro Tips

Best Practice

Preferisci una whitelist di origini attendibili invece di riflettere qualsiasi Origin. Tratta CORS come una configurazione sensibile per la sicurezza.

Best Practice

Se usi cookie/autenticazione, imposta Access-Control-Allow-Credentials: true E restituisci un'origine esplicita (non "*").

Best Practice

Aggiungi Vary: Origin quando permetti più origini o selezioni dinamicamente l'origine consentita.

Performance Tip

Aggiungi un Access-Control-Max-Age ragionevole per ridurre la latenza del preflight per API stabili.

Best Practice

Testa sia il percorso del preflight che quello della richiesta reale; alcune configurazioni restituiscono header corretti per GET ma falliscono per OPTIONS.

CI Tip

Esporta report JSON e conservali insieme alle modifiche di configurazione del gateway API per individuare rapidamente regressioni.

Additional Resources

Other Tools