Scanners

CORS Checker

Free CORS misconfiguration checker. Send test origins to any URL and see if it reflects arbitrary origins, trusts null, allows credentials with a wildcard, or accepts subdomain and prefix bypasses.

Enter an API endpoint or page. Strix sends eight GET and OPTIONS requests with different Origin headers and reads only the response headers. Use an endpoint that sets CORS headers, for example one your front end calls.

How the checker works

The checker first follows redirects with a plain GET to find the final URL. It then sends seven GET requests and one OPTIONS preflight to that URL, each with a different Origin header, and compares Access-Control-Allow-Origin and Access-Control-Allow-Credentials across the responses. Only response headers are read. Results are cached for five minutes.

ProbeOrigin sentFinds
Arbitrary originhttps://cors-probe.strix.aiOrigin reflection
null originnullTrust of sandboxed iframes and redirects
Host as prefixhttps://<host>.cors-probe.strix.aistartsWith or unanchored regex checks
Host as suffixhttps://strixprobe<apex>endsWith checks without a leading dot
Unknown subdomainhttps://strix-cors-probe.<apex>Wildcard subdomain trust
HTTP originhttp://<host>Trust of the insecure scheme
PreflightOPTIONS with PUT and custom headersApproved methods and headers for untrusted origins

Grades: A+ at 95 or more, A at 85, B at 70, C at 55, D at 40, E at 20, F below 20. Any untrusted origin that can read a response with credentials caps the grade at F. A wildcard * without credentials is informational, browsers never send cookies with it.

Why reflected origins matter

Browsers enforce the same-origin policy. CORS is the server telling the browser which other origins may read a response. When a server copies the request Origin into Access-Control-Allow-Origin and also sends Access-Control-Allow-Credentials: true, a page on any domain can make an authenticated request with the visitor’s cookies and read the result. On an endpoint like /api/me or /api/keys, that is account takeover in one click.

Fix checklist

  • Keep an explicit allow-list of full origins, scheme included. Compare with equality, not with a regex or a substring check.
  • Never add null to the allow-list.
  • Send Vary: Origin whenever the Allow-Origin value depends on the request.
  • Only send Access-Control-Allow-Credentials: true on endpoints that need cookies from another origin.
  • Prefer a single API origin and same-site cookies so most endpoints need no CORS at all.

What this tool does not do

  • It does not log in, so endpoints that only set CORS headers for authenticated sessions can look safe here.
  • It does not read response bodies or test other methods than GET and a PUT preflight.
  • It does not scan private or internal addresses.

Check the rest of the response with the security headers checker, or list every API host first with the subdomain finder.

Frequently asked questions

Start testing in minutes

Connect your GitHub repos and domains, and get fully set up in a few clicks.