এই সমস্যা কি?
CORS, বা CrossOrigin রিসোর্স শেয়ারিং, ত্রুটিগুলি হল সবচেয়ে সাধারণ সমস্যাগুলির মধ্যে যা ডেভেলপাররা ফ্রন্টএন্ডে প্রতিক্রিয়া এবং ব্যাকএন্ডে Node.js সহ ফুলস্ট্যাক অ্যাপ্লিকেশন তৈরি করার সময় সম্মুখীন হয়। এই ত্রুটিগুলি ঘটে যখন একটি ওয়েব অ্যাপ্লিকেশন একটি ভিন্ন ডোমেন, প্রোটোকল বা পোর্টে অনুরোধ করার চেষ্টা করে যেটি পৃষ্ঠাটি পরিবেশন করে। একটি সাধারণ React + Node.js সেটআপে, আপনার React অ্যাপ লোকালহোস্ট:3000-এ চলতে পারে যখন আপনার এক্সপ্রেস সার্ভার লোকালহোস্ট:5000-এ চলে, ব্রাউজার নিরাপত্তা বিধিনিষেধ ট্রিগার করে।
📋 Table of Contents
CORS, বা CrossOrigin রিসোর্স শেয়ারিং, ত্রুটিগুলি হল সবচেয়ে সাধারণ সমস্যাগুলির মধ্যে যা ডেভেলপাররা ফ্রন্টএন্ডে প্রতিক্রিয়া এবং ব্যাকএন্ডে Node.js সহ ফুলস্ট্যাক অ্যাপ্লিকেশন তৈরি করার সময় সম্মুখীন হয়। এই ত্রুটিগুলি …
এই সমস্যাটি ‘http://localhost:5000/api/data’ থেকে ‘http://localhost:3000’-এ আনার অ্যাক্সেস CORS নীতি দ্বারা ব্লক করা হয়েছে: অনুরোধ করা সংস্থানে কোনও ‘AccessControlAllowOrigin’ শিরোনাম নেই।’ নতুনরা প্রায়ই হতাশ বোধ করে কারণ কোডটি পোস্টম্যানে কাজ করে কিন্তু ব্রাউজারে ব্যর্থ হয়। API-এর সাথে কাজ করা যেকোনো আধুনিক ওয়েব ডেভেলপারের জন্য CORS বোঝা অপরিহার্য।
কেন এটা ঘটবে?

🎨 এআই জেনারেটেড: কেন এমন হয়?
মূল কারণটি ব্রাউজারের একই অরিজিন নীতির মধ্যে নিহিত, একটি নিরাপত্তা ব্যবস্থা যা দূষিত ওয়েবসাইটগুলিকে অন্যান্য ডোমেন থেকে সংবেদনশীল ডেটা অ্যাক্সেস করতে বাধা দেওয়ার জন্য ডিজাইন করা হয়েছে৷ যখন প্রতিক্রিয়া একটি ভিন্ন উত্সের Node.js সার্ভারে ফেচ বা Axios ব্যবহার করে একটি API কল করে, তখন ব্রাউজার প্রতিক্রিয়াটি ব্লক করে যদি না সার্ভার স্পষ্টভাবে CORS হেডারের মাধ্যমে এটির অনুমতি দেয়৷
Node.js এবং Express নিরাপত্তার কারণে ডিফল্টরূপে CORS সক্ষম করে না। AccessControlAllowOrigin, AccessControlAllowMethods এবং AccessControlAllowHeaders এর মত হেডার ছাড়া ব্রাউজার অনুরোধটি প্রত্যাখ্যান করে। অসাধারন পদ্ধতির জন্য preflight OPTIONS অনুরোধের মতো বিষয়গুলি (PUT, DELETE, বা কাস্টম হেডার) সমস্যাটিকে আরও বাড়িয়ে তোলে৷ ডেভেলপার সমীক্ষার ডেটা দেখায় যে CORS ত্রুটিগুলি ফুলস্ট্যাক প্রকল্পগুলিতে API ইন্টিগ্রেশন সমস্যার 25% এর বেশি।
ধাপে ধাপে সমাধান
আপনার প্রতিক্রিয়া এবং Node.js অ্যাপ্লিকেশনে CORS ত্রুটিগুলি সমাধান করতে এই পদক্ষেপগুলি অনুসরণ করুন৷
- আপনার Node.js প্রকল্পে cors মিডলওয়্যার ইনস্টল করুন: npm install cors
- আপনার এক্সপ্রেস সার্ভার ফাইলে এটি আমদানি করুন এবং ব্যবহার করুন।
- উৎপাদন নিরাপত্তার জন্য বিশেষভাবে অনুমোদিত উত্স কনফিগার করুন।
- শংসাপত্রের জন্য প্রয়োজন হলে আপনার প্রতিক্রিয়া আনয়ন কল আপডেট করুন।
এখানে সম্পূর্ণ সার্ভারসাইড বাস্তবায়ন:
জাভাস্ক্রিপ্ট
const express = require('express');
const cors = require('cors');
const app = express();
const corsOptions = {
origin: 'http://localhost:3000',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['ContentType', 'Authorization'],
credentials: true
};
app.use(cors(corsOptions));
app.use(express.json());
app.get('/api/data', (req, res) => {
res.json({ message: 'CORS fixed successfully!' });
});
app.listen(5000, () => console.log('Server running on port 5000'));
প্রতিক্রিয়ার দিকে, কুকিজ বা প্রমাণীকরণ ব্যবহার করলে শংসাপত্র সহ ফেচ ব্যবহার করুন:
জাভাস্ক্রিপ্ট
fetch('http://localhost:5000/api/data', {
method: 'GET',
credentials: 'include',
headers: {
'ContentType': 'application/json'
}
})
.then(res => res.json())
.then(data => console.log(data));
এই সেটআপটি নিশ্চিত করে যে সার্ভার সঠিক CORS শিরোনামগুলির সাথে প্রতিক্রিয়া জানায়, ব্রাউজারকে প্রতিক্রিয়া গ্রহণ করার অনুমতি দেয়।
বিকল্প সমাধান

🎨 এআই জেনারেটেড: বিকল্প সমাধান
কর্স প্যাকেজের বাইরে, এই তিনটি পন্থা বিবেচনা করুন। প্রথমে, লাইটওয়েট অ্যাপের জন্য মিডলওয়্যার ছাড়াই এক্সপ্রেসে ম্যানুয়ালি হেডার সেট করুন:
জাভাস্ক্রিপ্ট
app.use((req, res, next) => {
res.header('AccessControlAllowOrigin', 'http://localhost:3000');
res.header('AccessControlAllowHeaders', 'Origin, XRequestedWith, ContentType, Accept');
next();
});
দ্বিতীয়ত, বিকাশের সময় React-এর package.json-এ একটি প্রক্সি ব্যবহার করুন: \”proxy\”: \”http://localhost:5000\”। এটি একই উত্সের মাধ্যমে অনুরোধগুলিকে রুট করার মাধ্যমে সম্পূর্ণরূপে dev মোডে CORS এড়িয়ে যায়৷
তৃতীয়ত, উৎপাদনের জন্য, পরিবেশ জুড়ে নমনীয়তা নিশ্চিত করে লোকালহোস্ট এবং আপনার নিয়োজিত ডোমেনের মধ্যে স্যুইচ করতে dotenv-এর সাথে পরিবেশ ভিত্তিক কনফিগারেশন প্রয়োগ করুন।
এড়ানোর জন্য সাধারণ ভুলগুলি
বিকাশকারীরা প্রায়শই ‘*’ এর মূল সেট করে যা পরীক্ষার জন্য কাজ করে কিন্তু উৎপাদনে নিরাপত্তা দুর্বলতা তৈরি করে। সর্বদা নির্দিষ্ট ডোমেনগুলিকে সাদা তালিকাভুক্ত করুন৷ আরেকটি ভুল হল preflight OPTIONS অনুরোধগুলি পরিচালনা করতে ভুলে যাওয়া, যা ব্লক করা জটিল অনুরোধগুলির দিকে পরিচালিত করে৷ এক্সপ্রেসে রুট সংজ্ঞার পরে CORS কনফিগারেশন স্থাপন করা এড়িয়ে চলুন, কারণ মিডলওয়্যার অর্ডার গুরুত্বপূর্ণ। অবশেষে, প্রমাণীকরণ টোকেন বা সেশন ব্যবহার করার সময় শংসাপত্র পরিচালনা উপেক্ষা করবেন না।
রিয়েলওয়ার্ল্ড উদাহরণ

🎨 এআই জেনারেটেড: রিয়েলওয়ার্ল্ড উদাহরণ
একটি টাস্ক ম্যানেজমেন্ট অ্যাপ বিবেচনা করুন যেখানে প্রতিক্রিয়া একটি Node.js API থেকে কাজগুলি নিয়ে আসে। নির্দিষ্ট উত্স এবং শংসাপত্র সহ কর্স মিডলওয়্যার প্রয়োগ করার পরে, অ্যাপটি সফলভাবে ত্রুটি ছাড়াই ডেটা লোড করে। ব্যবহারকারীরা নির্বিঘ্নে কাজগুলি তৈরি করতে, আপডেট করতে এবং মুছতে পারেন। ব্রাউজার ডেভ টুলের মতো টুলের সাহায্যে নিরীক্ষণ করা প্রতিক্রিয়াগুলিতে উপস্থিত AccessControlAllowOrigin শিরোনাম দেখায়, সমাধান নিশ্চিত করে। এই প্যাটার্নটি বৃহত্তর অ্যাপ্লিকেশনগুলিতে স্কেল করে যা হাজার হাজার দৈনিক অনুরোধগুলি পরিচালনা করে।
FAQ
প্রশ্ন: কেন CORS পোস্টম্যানে কাজ করে কিন্তু প্রতিক্রিয়াতে নয়?
উত্তর: পোস্টম্যান ব্রাউজার একই অরিজিন নীতিগুলি প্রয়োগ করে না, তাই এটি সম্পূর্ণভাবে CORS চেকগুলিকে বাইপাস করে৷
প্রশ্ন: আমি কি শুধুমাত্র ক্লায়েন্টের দিকে CORS ঠিক করতে পারি?
উত্তর: না, উপযুক্ত শিরোনাম পাঠাতে সার্ভারে CORS কনফিগার করা আবশ্যক; একা ক্লায়েন্ট পরিবর্তন অপর্যাপ্ত.
প্রশ্ন: আমি কীভাবে উত্পাদনে একাধিক উত্স পরিচালনা করব?
উত্তর: ডাটাবেস বা কনফিগারেশন থেকে অনুমোদিত ডোমেনগুলি গতিশীলভাবে পরীক্ষা করতে corsOptions.origin-এ একটি অ্যারে বা একটি ফাংশন ব্যবহার করুন৷
প্রশ্ন: যদি আমি আনার পরিবর্তে Axios ব্যবহার করি?
A: Axios একই CORS নিয়মকে সম্মান করে; নিশ্চিত করুন যে সার্ভার হেডার সঠিকভাবে সেট করা হয়েছে এবং শংসাপত্রের সাথে অন্তর্ভুক্ত: প্রমাণের জন্য সত্য।
প্রশ্ন: CORS সক্ষম করার ফলে কি কার্যক্ষমতার কোনো প্রভাব আছে?
উত্তর: ন্যূনতম প্রভাব দেখা দেয়, প্রধানত প্রিফ্লাইট অনুরোধ থেকে, যা সঠিক ক্যাশিং হেডার দিয়ে প্রশমিত করা যেতে পারে।
উপসংহার

🎨 এআই জেনারেটেড: উপসংহার
React এবং Node.js-এ CORS ত্রুটিগুলি ঠিক করার জন্য ব্রাউজার নিরাপত্তা এবং সঠিক সার্ভার কনফিগারেশন বোঝা প্রয়োজন। টার্গেটেড সেটিংস সহ কর্স মিডলওয়্যার ব্যবহার করে, বিকাশকারীরা সুরক্ষিত, কার্যকরী ফুলস্ট্যাক অ্যাপ তৈরি করতে পারে। পরিবেশ-নির্দিষ্ট কনফিগারেশন প্রয়োগ করতে মনে রাখবেন এবং শক্তিশালী বাস্তবায়নের জন্য সাধারণ সমস্যাগুলি এড়ান। এই নির্দেশিকাটি দ্রুত এবং আত্মবিশ্বাসের সাথে সমস্যাগুলি সমাধান করার জন্য প্রয়োজনীয় সবকিছু সরবরাহ করে।
🚀 টেক কার্ভ থেকে এগিয়ে থাকুন
প্রতিদিনের প্রযুক্তিগত অন্তর্দৃষ্টি, সৎ পর্যালোচনা এবং ব্যবহারিক গাইড পান।
🔗 Share this article
✍️ Leave a Comment