CORS Basics
Cross-Origin Resource Sharing configuration and headers.
CORS Headers
# Allow origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Origin: *
# Allow methods
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
# Allow headers
Access-Control-Allow-Headers: Content-Type, Authorization
# Allow credentials
Access-Control-Allow-Credentials: true
Preflight Request
# Browser sends OPTIONS
OPTIONS /api/data
Origin: https://frontend.com
Access-Control-Request-Method: POST
# Server responds
Access-Control-Allow-Origin: https://frontend.com
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 86400
Express.js CORS
# Using cors middleware
const cors = require("cors");
app.use(cors());
# Specific origin
app.use(cors({
origin: "https://example.com",
credentials: true
}));
Manual CORS Headers
# Node.js
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST");
# Handle preflight
if (req.method === "OPTIONS") {
res.status(204).end();
}