আপনার Django প্রকল্পে CORS (Cross-Origin Resource Sharing) সেটআপ করার জন্য আমরা ধাপে ধাপে যাবো। পুরো টিউটোরিয়ালটি পুংখানু পুঙ্খ ব্যাখ্যা সহ থাকবে, যাতে আপনি সহজেই বুঝতে পারেন এবং প্রয়োগ করতে পারেন।
🔹 ধাপ ১: CORS কি এবং কেন দরকার?
CORS (Cross-Origin Resource Sharing) হলো একটি নিরাপত্তা ব্যবস্থা যা ব্রাউজারকে নির্দিষ্ট Origin (ডোমেইন) থেকে API অনুরোধ করার অনুমতি দেয়।
যদি আপনার Frontend (React, Vue, Angular ইত্যাদি) এবং Backend (Django API) আলাদা ডোমেইনে হোস্ট করা থাকে, তাহলে CORS সেটআপ করা জরুরি।
CORS সমস্যা হলে সাধারণত নিচের এরর দেখা যায়:
Access to fetch at 'https://api.example.com/data/' from origin 'https://example.com' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
🔹 ধাপ ২: django-cors-headers লাইব্রেরি ইনস্টল করুন
Django-তে CORS ব্যবস্থাপনার জন্য আমরা django-cors-headers লাইব্রেরি ব্যবহার করবো।
এই লাইব্রেরি ইনস্টল করতে নিচের কমান্ডটি রান করুন:
pip install django-cors-headers
🔹 ধাপ ৩: Django সেটিংসে corsheaders অ্যাপ যোগ করুন
ইনস্টল করার পর, এটি আপনার Django প্রজেক্টে যুক্ত করতে হবে।
📌 আপনার settings.py ফাইলে INSTALLED_APPS-এ এটি যুক্ত করুন:
INSTALLED_APPS = [
# অন্যান্য অ্যাপ
'corsheaders', # CORS ব্যবস্থাপনার জন্য
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
]
🔹 ধাপ ৪: Middleware-এ corsheaders.middleware.CorsMiddleware যোগ করুন
এখন CORS Middleware যুক্ত করতে হবে যাতে Django ব্রাউজার রিকোয়েস্টের সাথে CORS হেডার পাঠাতে পারে।
📌 আপনার settings.py ফাইলে MIDDLEWARE অংশে corsheaders.middleware.CorsMiddleware প্রথম দিকে যুক্ত করুন:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # CORS Middleware অবশ্যই প্রথমে রাখতে হবে
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
🔹 ধাপ ৫: CORS সেটিংস কনফিগার করুন
আপনার API-তে CORS কনফিগার করতে settings.py-এর নিচের অংশে নিচের কোড যুক্ত করুন:
✅ ১. নির্দিষ্ট Origin-এর জন্য অনুমতি দিন (Recommended)
এটি নিরাপদ উপায় যেখানে আপনি নির্দিষ্ট ডোমেইনগুলোর জন্য API অ্যাক্সেস অনুমতি দেবেন:
CORS_ALLOWED_ORIGINS = [
"https://yourfrontend.com", # আপনার Frontend ডোমেইন
"http://localhost:3000", # লোকালহোস্টের জন্য (React, Vue, Angular)
]
✅ ২. সব ডোমেইনের জন্য অনুমতি দিন (Development Mode)
আপনি যদি চান যে যেকোনো ওয়েবসাইট থেকে আপনার API অ্যাক্সেস করা যায়, তাহলে নিচের সেটিং ব্যবহার করতে পারেন (Production-এ এটি ব্যবহার না করাই ভালো):
CORS_ALLOW_ALL_ORIGINS = True
✅ ৩. কোন কোন HTTP মেথড অনুমোদন করবেন?
কোন কোন HTTP মেথড API-তে অনুমোদিত হবে তা নির্ধারণ করুন:
CORS_ALLOW_METHODS = [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
]
এর মানে, ফ্রন্টএন্ড অ্যাপ GET, POST, PUT, PATCH, DELETE, OPTIONS অনুরোধ পাঠাতে পারবে।
✅ ৪. কোন কোন হেডার অনুমোদিত হবে?
API রিকোয়েস্টে যেসব Custom Headers পাঠানো হবে, সেগুলো অনুমোদন করতে হবে:
CORS_ALLOW_HEADERS = [
"authorization",
"content-type",
"accept",
"origin",
"x-requested-with"
]
✅ ৫. Cookies বা Credentials অনুমোদন করা
যদি আপনার অ্যাপ্লিকেশন JWT Authentication, Cookies, বা Session-based Authentication ব্যবহার করে, তাহলে এটি যুক্ত করুন:
CORS_ALLOW_CREDENTIALS = True
এটি ব্রাউজারকে Cookies ও Authentication Headers পাঠানোর অনুমতি দেবে।
🔹 ধাপ ৬: সার্ভার রিস্টার্ট করুন
পরিবর্তনগুলো কার্যকর করতে আপনার Django সার্ভার রিস্টার্ট করুন:
python manage.py runserver
🔹 ধাপ ৭: CORS ঠিকমতো কাজ করছে কিনা পরীক্ষা করুন
আপনার API টেস্ট করতে Chrome DevTools ব্যবহার করতে পারেন।
✅ টেস্ট করার উপায়
- Frontend থেকে API Call করুন
যদি সবকিছু ঠিকঠাক সেটআপ করা থাকে, তাহলে ফ্রন্টএন্ড থেকেfetch()বা Axios দিয়ে API কল করলে কোনো CORS সমস্যা হবে না। - Postman দিয়ে টেস্ট করুন
Postmanদিয়ে API কল করে দেখুন যে API ঠিকঠাক কাজ করছে কিনা। - Chrome DevTools > Network Tab
Network ট্যাবে গিয়ে API রিকোয়েস্টেAccess-Control-Allow-Originহেডার আছে কিনা দেখুন।
যদি এটি থাকে তাহলে CORS সফলভাবে কনফিগার হয়েছে।
🎯 শেষ কথা
এখন আপনার Django API তে CORS সঠিকভাবে কনফিগার হয়ে গেছে। যদি কোনো সমস্যা হয়, তাহলে নিম্নলিখিত বিষয়গুলো চেক করুন: ✅ django-cors-headers ইনস্টল করা আছে কিনা
✅ INSTALLED_APPS-এ 'corsheaders' যোগ করা হয়েছে কিনা
✅ MIDDLEWARE-এ corsheaders.middleware.CorsMiddleware প্রথমে রাখা হয়েছে কিনা
✅ CORS_ALLOWED_ORIGINS বা CORS_ALLOW_ALL_ORIGINS সঠিকভাবে কনফিগার করা হয়েছে কিনা
✅ সার্ভার রিস্টার্ট করা হয়েছে কিনা
আপনার Django API এখন ফ্রন্টএন্ড (React/Vue/Angular) থেকে কোনো CORS সমস্যা ছাড়াই অ্যাক্সেস করা যাবে। 🚀