𝗪𝗵𝘆 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀 𝗗𝗼𝗻'𝘁 𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱 𝗖𝗢𝗥𝗦
CORS হলো ওয়েব ডেভেলপমেন্টের অন্যতম একটি ভুল বোঝা সিকিউরিটি টুল। অনেক ডেভেলপার মনে করেন এটি তাদের সার্ভারকে রক্ষা করে। কিন্তু এটি আসলে তা করে না।
CORS ব্যবহারকারীকে রক্ষা করে।
ব্রাউজার Same-Origin Policy (SOP) প্রয়োগ করে। এই পলিসিটি কোনো ক্ষতিকারক সাইটকে আপনার পক্ষ থেকে অন্য কোনো সাইটে রিকোয়েস্ট পাঠানো থেকে বিরত রাখে। CORS হলো মূলত একটি পদ্ধতি যার মাধ্যমে সার্ভার ব্রাউজারকে নির্দিষ্ট কিছু সাইটের জন্য সেই নিয়মটি শিথিল করতে বলে।
যদি আপনার রিকোয়েস্ট Postman-এ কাজ করে কিন্তু ব্রাউজারে ব্যর্থ হয়, তবে বুঝবেন আপনার CORS সমস্যা রয়েছে। Postman কোনো ব্রাউজার নয়, তাই এটি এই নিয়মগুলো প্রয়োগ করে না।
সাধারণ কিছু ভুল যা আপনার এড়িয়ে চলা উচিত:
- CORS-কে একমাত্র সিকিউরিটি হিসেবে ব্যবহার করা। CORS কোনো অথেন্টিকেশন (authentication) নয়। আপনার এখনও টোকেন, পাসওয়ার্ড এবং রেট লিমিটিং (rate limiting)-এর প্রয়োজন রয়েছে।
- ওয়াইল্ডকার্ড (wildcard) ট্র্যাপ। আপনি যদি কুকি (cookies) বা ক্রেডেনশিয়াল (credentials) পাঠাতে চান, তবে
Access-Control-Allow-Origin: *ব্যবহার করতে পারবেন না। আপনাকে অবশ্যই সঠিক ডোমেইনটি উল্লেখ করতে হবে। - প্রিফ্লাইট (preflight) রিকোয়েস্ট উপেক্ষা করা। অনেক API কলের আগে ব্রাউজার স্বয়ংক্রিয়ভাবে একটি OPTIONS রিকোয়েস্ট পাঠায়। যদি আপনার সার্ভার OPTIONS ব্লক করে দেয়, তবে আপনার আসল রিকোয়েস্টটি ব্যর্থ হবে।
- এরর হেডার (error headers) মিস করা। যদি আপনার API কোনো CORS হেডার ছাড়াই 401 বা 500 এরর রিটার্ন করে, তবে ব্রাউজার আসল এররটি লুকিয়ে ফেলবে। আপনি কেবল একটি সাধারণ CORS মেসেজ দেখতে পাবেন।
এটি কীভাবে সমাধান করবেন:
- OPTIONS রিকোয়েস্ট হ্যান্ডেল করা। নিশ্চিত করুন যে আপনার সার্ভার প্রিফ্লাইট কলের জন্য 200 বা 204 স্ট্যাটাস রিটার্ন করছে।
- মিডলওয়্যার (middleware) ব্যবহার করা। CORS-কে মিডলওয়্যার লেভেলে কনফিগার করুন যাতে এটি এররসহ সমস্ত রেসপন্স কভার করে।
- Vary হেডার সেট করা। আপনি যদি ডাইনামিকভাবে একাধিক অরিজিন (origin) অনুমতি দেন, তবে আপনাকে আপনার রেসপন্সে
Vary: Originযোগ করতে হবে। - সঠিক টুলস ব্যবহার করা। Node.js-এর জন্য
corsপ্যাকেজ ব্যবহার করুন। Django-এর জন্যdjango-cors-headersব্যবহার করুন।
ব্রাউজার এক্সটেনশন দিয়ে CORS বাইপাস করার চেষ্টা করা বন্ধ করুন। পরিবর্তে আপনার সার্ভার কনফিগারেশন ঠিক করুন।
Source: https://dev.to/onsen/why-developers-dont-understand-cors-and-how-to-fix-it-19d5
Optional learning community: https://t.me/GyaanSetuAi