cors-kit is a lightweight custom CORS middleware for Node.js, designed to be used with Express.js applications.
Install cors-kit
using npm:
npm install cors-kit
Import and use cors-kit
in your Express application:
import express from "express";
import cors from "cors-kit";
const app = express();
// Enable CORS with default settings
app.use(cors());
app.get("/", (req, res) => {
res.json({ message: "CORS enabled!" });
});
app.listen(3000, () => console.log("Server running on port 3000"));
You can customize cors-kit
by passing an options object:
app.use(
cors({
origin: ["https://example.com", "https://another.com"],
methods: "GET,POST", // Allow only GET and POST requests
headers: "Content-Type, Authorization", // Allow specific headers
credentials: true, // Enable cookies and authorization headers
})
);
The middleware accepts the following options:
Option | Type | Default Value | Description |
---|---|---|---|
origin |
string , string[] , Function
|
"*" |
Specifies allowed origins. Accepts a string, an array of strings, or a function. |
methods |
string , string[]
|
["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"] |
Specifies allowed HTTP methods. |
headers |
string , string[]
|
"*" |
Specifies allowed request headers. |
credentials |
boolean |
false |
If true , includes Access-Control-Allow-Credentials: true in the response. |
CORS preflight requests (OPTIONS
method) are automatically handled:
app.options("/api", cors()); // Enable preflight for specific route
You can use a function to dynamically determine the allowed origin:
app.use(
cors({
origin: (origin, callback) => {
const allowedOrigins = ["https://trusted.com", "https://secure.com"];
if (!origin || allowedOrigins.includes(origin)) {
callback(null, origin);
} else {
callback(new Error("Not allowed by CORS"));
}
},
})
);
- 🏗 Lightweight: Smaller and more efficient than the
cors
package. - 🚀 Easy to Use: Simple API with intuitive configuration.
- 🔄 Flexible: Supports dynamic origin handling and custom options.
- ✅ Automatic Preflight Handling: Seamlessly processes
OPTIONS
requests.
MIT License