CORS (Cross-Origin Resource Sharing) হল একটি নিরাপত্তা বৈশিষ্ট্য যা ওয়েব ব্রাউজারকে একটি ওয়েব পেজের ডোমেইন থেকে অন্য ডোমেইনে রিকোয়েস্ট করার অনুমতি দেয় বা নিষিদ্ধ করে। KoaJS-এ CORS হ্যান্ডল করার জন্য আপনি koa-cors মিডলওয়্যার ব্যবহার করতে পারেন। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ক্রস-অরিজিন রিকোয়েস্টগুলিকে সহজ এবং নিরাপদভাবে পরিচালনা করতে সাহায্য করে।
১. koa-cors ইনস্টলেশন
প্রথমে, আপনাকে koa-cors প্যাকেজটি ইনস্টল করতে হবে:
npm install koa-cors
koa-cors মিডলওয়্যারটি CORS পলিসি কনফিগার করে এবং অন্যান্য ডোমেইন থেকে রিকোয়েস্ট আসলে তাকে অনুমতি বা নিষেধ করে।
২. koa-cors কনফিগারেশন এবং ব্যবহার
koa-cors মিডলওয়্যারটি KoaJS অ্যাপ্লিকেশনে খুব সহজভাবে ব্যবহার করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:
const Koa = require('koa');
const Router = require('koa-router');
const cors = require('koa-cors'); // koa-cors ইনপোর্ট করা
const app = new Koa();
const router = new Router();
// koa-cors মিডলওয়্যার ব্যবহার করা
app.use(cors());
// রাউট তৈরি করা
router.get('/', async (ctx) => {
ctx.body = 'Hello, this is a response from the server!';
});
// রাউট মাউন্ট করা
app
.use(router.routes())
.use(router.allowedMethods());
// অ্যাপ চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে, koa-cors মিডলওয়্যারটি সমস্ত ইনকামিং রিকোয়েস্টের জন্য CORS হ্যান্ডলিং করতে সক্ষম। এটি ক্রস-অরিজিন রিকোয়েস্টকে অনুমতি দেয় এবং সেই অনুযায়ী হেডার সেট করে।
৩. koa-cors কনফিগারেশন
koa-cors মিডলওয়্যারটি অনেক কনফিগারেশন অপশন সরবরাহ করে, যার মাধ্যমে আপনি CORS পলিসি কাস্টমাইজ করতে পারেন। নিচে কিছু গুরুত্বপূর্ণ কনফিগারেশন অপশন দেখানো হলো:
৩.১. Specific Origins নির্ধারণ করা
যদি আপনি কেবল একটি নির্দিষ্ট ডোমেইন বা ডোমেইনগুলিকে অনুমতি দিতে চান, তাহলে origin অপশন ব্যবহার করতে পারেন:
app.use(cors({
origin: 'http://example.com' // শুধু 'example.com' থেকে আসা রিকোয়েস্ট অনুমতি দেওয়া হবে
}));
আপনি একাধিক ডোমেইনও নির্ধারণ করতে পারেন, যেমন:
app.use(cors({
origin: (ctx) => {
const allowedOrigins = ['http://example.com', 'http://another-example.com'];
if (allowedOrigins.includes(ctx.header.origin)) {
return ctx.header.origin; // যদি রিকোয়েস্টের অরিজিন অনুমোদিত থাকে
}
return false; // অন্যথায় CORS অনুমতি দেওয়া হবে না
}
}));
৩.২. HTTP Methods নির্ধারণ করা
আপনি CORS অনুমোদিত HTTP methods কাস্টমাইজ করতে পারেন:
app.use(cors({
methods: ['GET', 'POST', 'PUT', 'DELETE'] // GET, POST, PUT, DELETE মেথডগুলিকে অনুমতি দেওয়া হবে
}));
৩.৩. Access-Control-Allow-Headers কাস্টমাইজ করা
CORS হেডারে অনুমোদিত কাস্টম হেডার যুক্ত করতে পারেন:
app.use(cors({
allowedHeaders: ['Content-Type', 'Authorization'] // শুধু 'Content-Type' এবং 'Authorization' হেডার অনুমতি দেওয়া হবে
}));
৩.৪. Access-Control-Allow-Credentials নির্ধারণ করা
যদি আপনি ক্রস-অরিজিন রিকোয়েস্টে কুকি বা সেশন ডেটা পাঠাতে চান, তবে credentials অপশনটি true সেট করতে হবে:
app.use(cors({
credentials: true // ক্রস-অরিজিন রিকোয়েস্টে কুকি পাঠানো যাবে
}));
৪. CORS হ্যান্ডলিংয়ের উদাহরণ
এখন একটি উদাহরণ দেখুন যেখানে কেবল নির্দিষ্ট ডোমেইনগুলোতে CORS অনুমতি দেওয়া হবে:
const Koa = require('koa');
const Router = require('koa-router');
const cors = require('koa-cors');
const app = new Koa();
const router = new Router();
// CORS কনফিগারেশন
app.use(cors({
origin: (ctx) => {
const allowedOrigins = ['http://example.com', 'http://another-domain.com'];
if (allowedOrigins.includes(ctx.header.origin)) {
return ctx.header.origin; // অনুমোদিত অরিজিন থেকে রিকোয়েস্টের অনুমতি দেওয়া হবে
}
return false; // অন্য অরিজিন থেকে রিকোয়েস্ট নিষিদ্ধ
},
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true
}));
// রাউট তৈরি করা
router.get('/', async (ctx) => {
ctx.body = 'This is a CORS-enabled route!';
});
// রাউট মাউন্ট করা
app.use(router.routes()).use(router.allowedMethods());
// অ্যাপ চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে:
- কেবল
http://example.comএবংhttp://another-domain.comঅরিজিন থেকে রিকোয়েস্ট গ্রহণ করা হবে। GETএবংPOSTHTTP মেথডগুলির জন্য CORS অনুমতি দেওয়া হবে।- কেবল
Content-TypeএবংAuthorizationহেডারগুলিকেই অনুমতি দেওয়া হবে। - কুকি এবং ক্রেডেনশিয়াল ডেটা পাঠানো সম্ভব হবে।
সারাংশ
koa-cors মিডলওয়্যার ব্যবহার করে আপনি সহজেই CORS হ্যান্ডলিং করতে পারেন এবং বিভিন্ন কনফিগারেশন অপশন ব্যবহার করে ক্রস-অরিজিন রিকোয়েস্টগুলিকে নিয়ন্ত্রণ করতে পারেন। CORS পলিসি কাস্টমাইজ করে আপনি বিভিন্ন ডোমেইন থেকে আসা রিকোয়েস্টকে অনুমতি বা নিষেধ করতে পারবেন এবং আরও নিরাপদভাবে আপনার API বা ওয়েব অ্যাপ্লিকেশন পরিচালনা করতে পারবেন।
Read more