secure-express-setup
Version:
Military-grade one-command security setup for Express.js applications
28 lines (24 loc) • 914 B
JavaScript
// lib/cors.js
const cors = require('cors');
function setupCors(options) {
const corsOptions = {
origin: (origin, callback) => {
const allowedOrigins = Array.isArray(options.origin)
? options.origin
: [options.origin];
if (allowedOrigins.includes('*') || !origin || allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
credentials: options.credentials !== false,
methods: options.methods || ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
allowedHeaders: options.allowedHeaders || ['Content-Type', 'Authorization', 'x-api-key'],
exposedHeaders: options.exposedHeaders || ['Content-Range', 'X-Content-Range'],
maxAge: options.maxAge || 600,
optionsSuccessStatus: 204
};
return cors(corsOptions);
}
module.exports = setupCors;