CORS-Test

CORS-Checker

Prüfe, ob eine API Anfragen von deinem Origin akzeptiert. Führt Preflight OPTIONS und echten Request aus, zeigt alle Access-Control-*-Header.

Was ist CORS?

CORS (Cross-Origin Resource Sharing) ist ein Browser-Sicherheitsmechanismus. Standardmäßig kann ein Script auf https://a.com keine Antworten von https://b.com lesen. Der Server auf b.com muss dies per Access-Control-Allow-Origin-Header erlauben. Für Non-Simple-Requests (POST mit JSON, custom Header etc.) schickt der Browser zuerst ein OPTIONS-"Preflight" zur Berechtigungsprüfung — erlaubt die Server-Antwort den Origin, die Methode oder die Header nicht, blockt der Browser den echten Request und zeigt einen CORS-Fehler in den DevTools.

CORS-Response-Header erklärt

Access-Control-Allow-Origin

Gibt an, welcher Origin erlaubt ist. Ein bestimmter Origin, "*" (beliebig), oder der Request-Origin gespiegelt.

Access-Control-Allow-Credentials

Bei "true" sendet der Browser Cookies/Auth-Header. Nicht mit Allow-Origin: * kombinierbar.

Access-Control-Allow-Methods

Welche HTTP-Methoden der Server erlaubt. Nur in Preflight-Antwort relevant.

Access-Control-Allow-Headers

Welche Request-Header der Server erlaubt. Relevant für Non-Simple-Header wie Authorization oder X-*.

Access-Control-Expose-Headers

Welche Response-Header der Browser für JavaScript sichtbar macht. Standardmäßig nur eine kurze Safelist.

Access-Control-Max-Age

Wie lange (Sekunden) der Browser das Preflight-Ergebnis cachen darf. Höhere Werte vermeiden wiederholte OPTIONS.

CORS-Checker FAQ

Warum zeigt mein Browser CORS-Fehler, aber dieses Tool zeigt Header?

CORS wird vom Browser durchgesetzt, nicht vom Server. Dieses Tool läuft in unserem Backend — es gelten keine CORS-Regeln, wir sehen die rohe Antwort. Dein Browser blockt Client-seitig basierend auf den Access-Control-*-Headern. Passen die hier angezeigten Header nicht zu deinem Origin/Methode/Headern, blockt der Browser — auch wenn der Server antwortet.

Was ist ein Preflight-OPTIONS-Request?

Für "non-simple" Cross-Origin-Requests (alles, was nicht ein einfaches GET/HEAD/POST mit Basis-Headern ist) schickt der Browser zuerst ein OPTIONS: "darf ich diesen Request senden?". Der Server antwortet mit Access-Control-Allow-Methods, Allow-Headers und Allow-Origin. Erlauben die Header den echten Request, macht der Browser weiter. Sonst blockt er.

Warum reicht Access-Control-Allow-Origin: * für meinen Request nicht?

Enthält dein Request Credentials (Cookies, Authorization-Header, TLS-Client-Zertifikat), lehnt der Browser "*" ab und verlangt einen spezifischen Origin. Der Server muss deinen exakten Origin in Access-Control-Allow-Origin spiegeln und Access-Control-Allow-Credentials: true setzen.

Gilt CORS für Server-zu-Server-Requests?

Nein. CORS ist rein ein Browser-Feature. curl, Node-Fetch vom Server, Postman oder beliebige Nicht-Browser-Clients ignorieren CORS komplett. Zeigt ein Nicht-Browser-Umfeld "CORS-Fehler", liegt das eigentliche Problem woanders (Netzwerk, Auth, falsche URL).

Wie behebe ich einen CORS-Fehler?

Am Server beheben, nicht am Client. Korrektes Access-Control-Allow-Origin (dein Frontend-Origin), Allow-Methods (GET/POST usw.) und Allow-Headers (custom/auth Header) setzen. Für Credentials: Allow-Credentials: true. OPTIONS muss behandelt werden und 2xx liefern. Browser-Extensions, die CORS abschalten, sind Dev-Abkürzungen — niemals eine echte App darauf aufbauen.