Cross Origin Resource Sharing

CORS (ক্রস-অরিজিন রিসোর্স শেয়ারিং) কী?

CORS হলো একটি মেকানিজম যা ব্রাউজার এবং সার্ভারের মধ্যে নির্দিষ্ট পলিসির মাধ্যমে ডোমেইন ক্রস করে ডেটা শেয়ারিংয়ের অনুমতি দেয়। সাধারণত, ব্রাউজার Same-Origin Policy অনুসরণ করে, যা ব্রাউজারকে কেবলমাত্র একই ডোমেইন থেকে আসা রিসোর্স অ্যাক্সেস করার অনুমতি দেয়। কিন্তু CORS এই পলিসিকে শিথিল করে, যাতে এক ডোমেইন থেকে আরেক ডোমেইনের ডেটা অ্যাক্সেস করা যায়।

১. Origin Definition

একটি URL-এর প্রোটোকল, ডোমেইন এবং পোর্টের সমন্বয়ে অরিজিন তৈরি হয়। উদাহরণস্বরূপ:
http://example.com:8080/foo
এখানে প্রোটোকল হলো http, ডোমেইন হলো example.com, পোর্ট হলো 8080, এবং পথ (path) হলো /foo। একসাথে এই উপাদানগুলো অরিজিন সংজ্ঞায়িত করে।

২. সেইম-অরিজিন পলিসি (Same-Origin Policy)

ব্রাউজার Same-Origin Policy অনুসরণ করে। এটি বিভিন্ন ডোমেইনের মধ্যে ডেটা বিনিময় বাধা দেয়, যাতে ম্যালিশিয়াস সাইট থেকে নিরাপত্তা ঝুঁকি এড়ানো যায়। উদাহরণস্বরূপ, যদি evil.com সাইট FB.com সাইট থেকে ডেটা অ্যাক্সেস করতে চায়, তবে ব্রাউজার Same-Origin Policy অনুসারে এটিকে ব্লক করবে।

৩. CORS হেডারস কীভাবে কাজ করে?

সার্ভার যখন ক্রস-অরিজিন থেকে রিকুয়েস্ট গ্রহণের অনুমতি দেয়, তখন CORS হেডারস সেট করে। উদাহরণস্বরূপ, যদি messenger.com সাইট FB.com সাইটের কিছু ডেটা অ্যাক্সেস করতে চায়, তবে FB.com সার্ভার CORS হেডার দিয়ে জানাবে যে এই ডোমেইনের অ্যাক্সেস অনুমোদিত।

৪. Access-Control-Allow-Origin

এই হেডারটি সার্ভার থেকে ক্লায়েন্টকে জানায় যে কোন ডোমেইন থেকে এই ডেটা অ্যাক্সেস করা যাবে। উদাহরণস্বরূপ, example.com ডোমেইন শুধুমাত্র নির্দিষ্ট অ্যাপ্লিকেশন থেকে ডেটা অ্যাক্সেসের অনুমতি দেয়ার জন্য Access-Control-Allow-Origin হেডার ব্যবহার করে।

৫. Access-Control-Allow-Credentials

যদি একটি রিকুয়েস্টে কুকিজ অন্তর্ভুক্ত থাকে এবং এই রিকুয়েস্টে সার্ভারকে কুকিজ গ্রহণের অনুমতি দিতে হয়, তবে Access-Control-Allow-Credentials হেডার ব্যবহার করতে হবে। এটি না থাকলে ব্রাউজার রিকুয়েস্টটি বাতিল করবে।

৬. Preflight Request

কোনো Sensitive Request পাঠানোর আগে ব্রাউজার একটি Preflight Request পাঠায়, যাতে সার্ভার থেকে প্রয়োজনীয় CORS হেডারস সম্পর্কে অনুমতি নেয়া যায়। এই Request-এ নিম্নলিখিত হেডারগুলো থাকে:

  • Access-Control-Allow-Methods: কোন HTTP মেথডগুলো অনুমোদিত, যেমন GET, POST।
  • Access-Control-Allow-Headers: কোন হেডারগুলো অনুমোদিত।
  • Access-Control-Max-Age: কতক্ষণ পর্যন্ত প্রিফ্লাইট অনুরোধের ফলাফল ক্যাশে রাখা যাবে।
1 Like

Thanks for sharing this helpful post

1 Like

খটমটে লেখা। এআই দিয়ে লেখা নাকি?

not fully ! Modified with AI

what’s the point of such writing where you don’t share what you know / learned (in a human way)?

I don’t see any point in sharing information in a human way either. To me, information is information. Although I mentioned that this writing was modified with AI, which is even better to me, I didn’t find your argument logical. Sorry!

It’s understandable that a bot won’t understand the reasoning a human implies (pun intended).

On serious note, you are writing for humans here and when presented with human flavour (eg. with an example), it’s more digestible for humans.