Tutti gli strumenti

CORS tester

Indica l'URL che stai chiamando e l'origine da cui lo chiami. Facciamo la richiesta dal nostro server e ti diciamo quale intestazione Access-Control manca o è sbagliata.

La richiesta che vuoi fare

L'URL completo verso cui va la richiesta, percorso compreso.
Lo schema e l'host da cui viene servita la tua pagina, senza percorso.
Separate da virgole, e lascia vuoto se la richiesta non invia intestazioni proprie. Indicare content-type conta come intestazione propria, perché se il browser fa il preflight dipende dal valore che invii. Quelle ordinarie come accept non le chiediamo, perché nemmeno il browser le chiede.

Questo strumento gira sui nostri server. Facciamo la richiesta da un indirizzo pubblico e ti mostriamo le intestazioni tornate indietro, e non inviamo mai i tuoi cookie né un corpo.

Che cos'è CORS e che cos'è un preflight

Un browser non lascia che un'origine legga la risposta di un'altra a meno che la seconda non lo consenta. Lo consente con Access-Control-Allow-Origin nella risposta. Per tutto ciò che va oltre un semplice GET o POST con intestazioni ordinarie, il browser chiede prima con una richiesta OPTIONS chiamata preflight, e invia la richiesta vera solo se la risposta ammette il metodo e le intestazioni che sta per usare.

Come leggere il verdetto

Ogni riga è un'intestazione che il browser guarda, con accanto il valore tornato indietro. Una riga segnata come fallita è un motivo per cui la richiesta viene bloccata, e il messaggio in alto nomina il primo, perché è quello da sistemare per primo. Le righe segnate come informazione da sole non cambiano nulla. Sotto ci sono la richiesta esatta che abbiamo inviato e le intestazioni tornate indietro, così puoi passare l'intero scambio a chi gestisce il server.

Quale intestazione risolve quale errore

Access-Control-Allow-Origin è la prima da inviare, e deve nominare la tua origine esattamente, schema e porta compresi, oppure essere un asterisco. Access-Control-Allow-Methods e Access-Control-Allow-Headers contano solo sul preflight, e ciascuna deve elencare quello che il browser ha chiesto. Access-Control-Allow-Credentials deve essere la stringa true prima che partano i cookie, e non si combina con un'origine a asterisco. Access-Control-Expose-Headers è ciò che permette a JavaScript di leggere qualcosa oltre alla manciata di intestazioni che i browser consegnano di default.

Smetti di indovinare quale intestazione il server non ha inviato

Una richiesta bloccata da fuori sembra sempre uguale, qualunque ne sia la causa. Session Replay registra insieme la richiesta, le intestazioni della risposta e la riga di console, così chi la guarda dopo ha già tutto davanti.