Allow-Origin returns '*' but credentials are required
Browsers reject `Access-Control-Allow-Origin: *` whenever credentials mode is `include`.
Fix: Echo the request `Origin` back literally and pair it with `Access-Control-Allow-Credentials: true`.
Search tools and pages.
Send a real OPTIONS preflight and the actual request from a server proxy and inspect the per-rule CORS verdict for any origin
sidebar • 160x600
Written by Giorgos Kostas. Last reviewed:
CORS Tester runs a server-side probe instead of a browser fetch, so you can simulate any `Origin`, custom headers, and credentialed mode without configuring a temporary site to host the test.
The tool sends an `OPTIONS` preflight first, then the actual verb you specified, and renders both responses side-by-side with a per-rule verdict for `Access-Control-Allow-Origin`, `Allow-Methods`, `Allow-Headers`, `Allow-Credentials`, and `Max-Age`.
POST https://api.example.com/orders Origin: https://app.staging.example.com Headers: content-type, x-request-id Credentials: include
Preflight (OPTIONS): 204 Allow-Origin ✓ matches request origin Allow-Methods ✓ POST included Allow-Headers ✗ missing 'x-request-id' Actual (POST): blocked by browser due to preflight failure
Browsers reject `Access-Control-Allow-Origin: *` whenever credentials mode is `include`.
Fix: Echo the request `Origin` back literally and pair it with `Access-Control-Allow-Credentials: true`.
The actual verb may also need to set Allow-Origin; preflight covers OPTIONS only.
Fix: Apply your CORS middleware to all responses, not just to OPTIONS handlers.
Custom headers (auth, observability) trigger preflight; Allow-Headers must include every one of them.
Fix: List headers explicitly (case-insensitive). Wildcards `*` were only standardised in CORS 2024 and aren't supported with credentials.
The Origin Checker is passive: you paste an `Access-Control-Allow-Origin` value plus a list of origins and it tells you whether the rule would match. The CORS Tester actually fires the OPTIONS preflight and the real request from a server proxy and inspects every header the origin server returns.
No — requests originate from our Node server, so the User-Agent says so and the IP is not the user's. Use the verdict to verify CORS configuration; load-test from real browsers separately.
No — the proxy runs in the cloud and can't reach `localhost`/`127.0.0.1`/private IPs. Tunnel locally with ngrok or cloudflared and point the tester at the public URL.
Because the browser would block any cross-origin failure before showing it to you. By using a server proxy we can read the raw response headers — including the ones browsers hide (`Access-Control-Allow-Origin: null`, missing headers entirely) — and explain exactly why the browser would reject the request.
Toggle 'with credentials' and the tester sends a representative cookie + checks that the response carries `Access-Control-Allow-Credentials: true` AND a non-wildcard `Allow-Origin`. The actual cookie value is generic — we don't transmit any cookies you might have on this site.
Pair the active tester with the passive checker and other web-debugging tools. You can also browse the full Security & Web Hardening category for more options.
Passive Access-Control-Allow-Origin matcher — paste a header value plus a list of origins to confirm wildcard, scheme, and subdomain rules
Paste response headers to audit HSTS, CSP, CORS, X-Powered-By disclosure, and Set-Cookie flags
Build a Content Security Policy header from per-directive cards with chip-style sources, presets, and a live header + meta-tag preview
Parse a URL into scheme, host, port, path, query parameters, fragment, and origin — fully client-side
Inspect status, headers, redirects, and canonical hints for a URL
Probe a host:port and render the full TLS certificate chain with subject, issuer, SAN, key, signature, fingerprints, and days-until-expiry
Decode JWTs, verify HMAC, RSA, and EC signatures (paste secret/PEM or fetch JWKS), inspect claims, and visualize the exp/nbf/iat timeline
Server-side OPTIONS preflight + actual request, with a per-rule verdict for Allow-Origin, Allow-Methods, Allow-Headers, and Allow-Credentials.
content bottom • up to 300x250