CORS (Cross-Origin Resource Sharing) হলো একটি সিকিউরিটি ফিচার যা ব্রাউজার এবং সার্ভারের মধ্যে একসাথে কাজ করার জন্য প্রয়োজনীয় নিয়ম এবং পদ্ধতি নির্ধারণ করে। CORS মূলত একটি নেটওয়ার্ক পলিসি যা একটি ওয়েব পেজকে অন্য একটি ডোমেইন (যা অরিজিন হিসেবে পরিচিত) থেকে রিসোর্স (যেমন API, ইমেজ, ফন্ট, ইত্যাদি) অ্যাক্সেস করতে দেয় বা বাধা দেয়।
Cross-origin বলতে বোঝায়, যখন আপনি আপনার ওয়েব অ্যাপ্লিকেশন থেকে একটি রিকোয়েস্ট পাঠান এবং সেই রিকোয়েস্টটি অন্য একটি ডোমেইনে (অথবা প্রোটোকল বা পোর্টে) যায়। উদাহরণস্বরূপ:
- আপনি যদি
http://example.comথেকেhttp://api.example.comএ রিকোয়েস্ট করেন, এটি Cross-origin রিকোয়েস্ট।
কিছুক্ষেত্রে, ব্রাউজার ডিফল্টভাবে এক ডোমেইনের ওয়েব অ্যাপ্লিকেশনকে অন্য ডোমেইন থেকে রিসোর্স অ্যাক্সেস করতে দেয় না। তবে CORS পলিসির মাধ্যমে আপনি নির্দিষ্ট ডোমেইন, পদ্ধতি (GET, POST, PUT, DELETE, ইত্যাদি), হেডার ইত্যাদির অনুমতি দিতে পারেন।
CORS এর প্রয়োজনীয়তা
CORS এর প্রয়োজনীয়তা তখনই দেখা দেয় যখন আপনার ওয়েব অ্যাপ্লিকেশন এবং API বিভিন্ন ডোমেইনে থাকে, এবং আপনি সেই API-কে ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট থেকে অ্যাক্সেস করতে চান। সাধারণভাবে, ব্রাউজার নিরাপত্তা কারণে এক ডোমেইন থেকে অন্য ডোমেইনে রিকোয়েস্ট করার অনুমতি দেয় না, এবং এটি Same-Origin Policy নামে পরিচিত।
Same-Origin Policy: এই নীতি অনুযায়ী, একটি ওয়েব পেজ শুধুমাত্র তার নিজস্ব ডোমেইনে থাকা রিসোর্সগুলিকে অ্যাক্সেস করতে পারে। উদাহরণস্বরূপ:
- আপনি
https://example.comথেকেhttps://api.example.comএ রিকোয়েস্ট পাঠালে, এটি Cross-Origin হবে এবং ব্রাউজার এ ধরনের রিকোয়েস্ট ব্লক করে দেবে।
CORS-এ, সার্ভার সেই রিকোয়েস্টটি গ্রহণ করতে পারবে কিনা এবং কোন ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করবে, তা নির্ধারণ করা হয়।
KoaJS-এ CORS কনফিগারেশন
KoaJS-এ CORS ব্যবস্থাপনার জন্য একটি জনপ্রিয় মিডলওয়্যার হল koa-cors। এটি কনফিগার করার মাধ্যমে আপনি নির্দিষ্ট ডোমেইন, HTTP মেথড, অথবা হেডারের জন্য CORS অনুমোদন দিতে পারেন।
১. koa-cors ইনস্টল করা
প্রথমে, KoaJS অ্যাপ্লিকেশনে koa-cors প্যাকেজটি ইনস্টল করতে হবে:
npm install koa-cors
২. koa-cors কনফিগারেশন এবং ব্যবহারের উদাহরণ
const Koa = require('koa');
const Router = require('koa-router');
const cors = require('koa-cors');
const app = new Koa();
const router = new Router();
// koa-cors মিডলওয়্যার ব্যবহার করা
app.use(cors());
// একটি রাউট তৈরি করা
router.get('/api/data', async (ctx) => {
ctx.body = { message: 'CORS enabled for this route' };
});
// রাউট মাউন্ট করা
app.use(router.routes()).use(router.allowedMethods());
// অ্যাপ চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
ব্যাখ্যা:
app.use(cors()): এটিkoa-corsমিডলওয়্যার ব্যবহার করছে, যা সমস্ত ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করতে সক্ষম।- সার্ভারটি
/api/dataরাউটে CORS অনুমোদন দেবে, যার মাধ্যমে অন্য ডোমেইন থেকে ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট API রিকোয়েস্ট করতে পারবে।
৩. CORS কনফিগারেশন অপশন
koa-cors মিডলওয়্যার কনফিগারেশন এর মাধ্যমে আপনি বিভিন্ন প্যারামিটার নিয়ন্ত্রণ করতে পারেন:
app.use(cors({
origin: 'https://example.com', // শুধু এই ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করা হবে
methods: ['GET', 'POST'], // অনুমোদিত HTTP মেথড
allowedHeaders: ['Content-Type', 'Authorization'], // অনুমোদিত হেডার
credentials: true // ক্রেডেনশিয়ালস (যেমন কুকি) অনুমোদন করা
}));
ব্যাখ্যা:
- origin: কোন ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করা হবে তা নির্দিষ্ট করতে পারেন। যদি আপনি সমস্ত ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করতে চান, তাহলে
origin: '*'ব্যবহার করতে পারেন। - methods: কোন HTTP মেথড (GET, POST, PUT, DELETE) অনুমোদিত তা নির্দিষ্ট করা হয়।
- allowedHeaders: যে HTTP হেডারগুলিকে অনুমতি দেওয়া হবে তা নির্দিষ্ট করতে পারবেন।
- credentials: যদি আপনি কুকি বা অন্য কোনো ক্রেডেনশিয়াল (যেমন সেশন) অনুমোদন করতে চান, তাহলে এটি true করতে হবে।
৪. CORS এর নিরাপত্তা
CORS ব্যবস্থাপনা যখন সঠিকভাবে করা হয়, তখন এটি সুরক্ষা প্রদান করে এবং অন্য ডোমেইন থেকে অনাকাঙ্ক্ষিত অ্যাক্সেস বন্ধ করে। তবে, CORS কনফিগারেশনে সতর্কতা অবলম্বন করা উচিত:
- শুধুমাত্র অনুমোদিত ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করা উচিত।
- যদি আপনার API ক্রেডেনশিয়ালস বা সেশন অনুমোদন করে, তাহলে
credentials: trueব্যবহার করে সেশন সঠিকভাবে নিরাপদ রাখুন। - অত্যন্ত কনফিগারেবল এবং স্পেসিফিক CORS নীতি গঠন করুন যাতে সুরক্ষা নিশ্চিত হয়।
সারাংশ
CORS (Cross-Origin Resource Sharing) একটি সিকিউরিটি মেকানিজম যা ওয়েব অ্যাপ্লিকেশনকে অন্য ডোমেইন থেকে রিসোর্স অ্যাক্সেস করতে দেয়। KoaJS-এ koa-cors মিডলওয়্যার ব্যবহার করে CORS কনফিগারেশন করা হয় এবং আপনি বিভিন্ন ডোমেইন, মেথড এবং হেডার ভিত্তিক কনফিগারেশন করতে পারেন। এটি API বা ওয়েব সার্ভারগুলির মধ্যে নিরাপদভাবে যোগাযোগ নিশ্চিত করতে সাহায্য করে। CORS ব্যবস্থাপনা ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা এবং এক্সেস কন্ট্রোলের জন্য গুরুত্বপূর্ণ একটি অংশ।
Read more