Instantly test Cross-Origin Resource Sharing (CORS) headers for any public endpoint. Our backend performs the request and reveals full response headers, even if the server doesn't support CORS. Identify misconfigurations, verify Access-Control-Allow-Origin, and get actionable insights to fix CORS errors.
CORS (Cross-Origin Resource Sharing) is a critical security mechanism implemented by web browsers that controls how web applications running at one origin (domain, protocol, port) can request resources from a different origin. Without proper CORS headers, browsers block cross-origin requests, preventing malicious websites from reading sensitive data. However, for legitimate API integrations, developers must configure servers to return the correct Access-Control-Allow-Origin header.
? How this tool works:
Unlike browser‑side CORS checkers, our tool uses a server‑side PHP script that makes an HTTP request to the target URL. Because the request originates from our server, the browser’s CORS policy does not interfere. We then display all response headers, including any Access-Control-* headers, along with the HTTP status and final URL. This approach reveals the exact CORS configuration of the target server.
fetch() calls fail with cryptic “No 'Access-Control-Allow-Origin'” errors.
| Header | Purpose | Example |
|---|---|---|
Access-Control-Allow-Origin
|
Specifies which origins can access the resource. Use * for public APIs or specific origin.
|
https://your-app.com or *
|
Access-Control-Allow-Methods
|
Lists HTTP methods allowed (GET, POST, PUT, etc.) during preflight. |
GET, POST, PUT, DELETE
|
Access-Control-Allow-Headers
|
Indicates which custom headers can be used in the actual request. |
Content-Type, Authorization, X-API-Key
|
Access-Control-Max-Age
|
Time in seconds that preflight response can be cached. |
86400
|
Access-Control-Expose-Headers
|
Allows JavaScript to read specific headers from the response. |
X-Total-Count, Custom-Header
|
A development team deployed a React frontend on http://localhost:3000 and an Express API on http://localhost:5000. All API calls failed with CORS errors. Using this CORS checker they discovered the API server was not sending Access-Control-Allow-Origin. The fix: installing the cors middleware and configuring origin: true for development. The proper headers instantly resolved the issue, enabling seamless local development and later production deployment with domain restrictions.
const cors = require('cors');
app.use(cors({
origin: 'https://yourdomain.com',
methods: ['GET','POST'],
credentials: true
}));
add_header 'Access-Control-Allow-Origin' 'https://example.com'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
from flask_cors import CORS CORS(app, origins=["https://trusted.com"])
Header set Access-Control-Allow-Origin "https://client.com"
Access-Control-Allow-Origin: * with credentials (withCredentials: true) is forbidden by browsers — must specify explicit origin.
Access-Control-* headers, and actionable recommendations.
Access-Control-Allow-Origin header or returns one that does not match your current origin (or is not '*'), the browser blocks the request and prevents reading any headers. Our tool captures this scenario and informs you that CORS is not enabled or that the origin is mismatched.
curl to inspect OPTIONS responses.
Origin header sent. Our tool sends the current window.location.origin as the origin, which is typical for frontend apps. Accuracy is high for public endpoints.