CORS Deep Explanation & Security Config

CORS – Deep Explanation & Security Configuration (Express.js)

CORS (Cross-Origin Resource Sharing) হলো একটি গুরুত্বপূর্ণ security mechanism যা browser এবং server-এর মধ্যে নিরাপদ data আদান-প্রদান নিশ্চিত করে। এই টিউটোরিয়ালে আমরা CORS-এর ভিতরের কাজ, সমস্যা এবং Express.js-এ সঠিকভাবে security configuration শিখবো।

🔐 CORS কী?

CORS হলো browser-এর একটি security policy যা এক origin (domain + protocol + port) থেকে অন্য origin-এ request পাঠানো নিয়ন্ত্রণ করে। যদি server থেকে সঠিক permission না দেওয়া হয়, তাহলে browser request block করে দেয়।

🧱 Same-Origin Policy (SOP)

Browser default ভাবে Same-Origin Policy ব্যবহার করে। অর্থাৎ:

  • Protocol একই হতে হবে (http / https)
  • Domain একই হতে হবে
  • Port একই হতে হবে

❌ CORS Error কেন হয়?

যখন frontend এবং backend আলাদা origin-এ থাকে এবং server প্রয়োজনীয় CORS headers পাঠায় না, তখন browser error দেয়।

Access to fetch at 'api.example.com'
from origin 'example.com'
has been blocked by CORS policy
        

✅ সমাধান কী?

Server থেকে নির্দিষ্ট origin-কে permission দিতে হবে CORS headers ব্যবহার করে।

📌 গুরুত্বপূর্ণ CORS Headers

Header কাজ
Access-Control-Allow-Origin কোন origin request করতে পারবে
Access-Control-Allow-Methods Allowed HTTP methods
Access-Control-Allow-Headers Allowed request headers
Access-Control-Allow-Credentials Cookies / Auth allow করবে কিনা

⚙️ Express.js-এ Basic CORS Setup

npm install cors
      
const express = require('express');
const cors = require('cors');

const app = express();

app.use(cors());

app.get('/api/data', (req, res) => {
  res.json({ message: 'CORS enabled' });
});

app.listen(3000);
      

🛡️ Secure CORS Configuration (Recommended)

app.use(cors({
  origin: ['https://example.com'],
  methods: ['GET', 'POST'],
  allowedHeaders: ['Content-Type', 'Authorization'],
  credentials: true
}));
      

👉 সব origin allow না করে নির্দিষ্ট domain ব্যবহার করাই সবচেয়ে নিরাপদ।

🔄 Preflight Request (OPTIONS)

Browser কিছু request পাঠানোর আগে OPTIONS request পাঠায় server capability যাচাই করার জন্য।

app.options('*', cors());
      

✅ CORS Best Practices

  • Never use * in production
  • Specific origin whitelist ব্যবহার করুন
  • Credentials থাকলে origin অবশ্যই explicit হতে হবে
  • CORS + Authentication একসাথে configure করুন
👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. CORS কী এবং কেন এটি প্রয়োজন?

CORS (Cross-Origin Resource Sharing) হলো একটি ব্রাউজার সিকিউরিটি মেকানিজম যা এক ডোমেইন থেকে অন্য ডোমেইনের রিসোর্স অ্যাক্সেস নিয়ন্ত্রণ করে। এটি অননুমোদিত API কল প্রতিরোধ করতে ব্যবহৃত হয়।

2. CORS কিভাবে কাজ করে?

ব্রাউজার রিকোয়েস্ট পাঠানোর সময় Origin হেডার পাঠায়। সার্ভার যদি Access-Control-Allow-Origin হেডারে অনুমতি দেয়, তখনই ব্রাউজার রেসপন্স গ্রহণ করে।