ক্রস-অরিজিন রিসোর্স শেয়ারিং - CORS
(একে একে ক্রস-ডোমেন এজেএক্স অনুরোধ) এমন একটি সমস্যা যা সিম-অরিজিন-পলিসি অনুসারে বেশিরভাগ ওয়েব বিকাশকারীরা ক্লায়েন্ট জাভাস্ক্রিপ্টকে সিকিউরিটি স্যান্ডবক্সে সীমাবদ্ধ করে থাকে, সাধারণত জেএস প্রত্যন্ত সার্ভারের সাথে সরাসরি যোগাযোগ করতে পারে না একটি ভিন্ন ডোমেন থেকে। অতীতে বিকাশকারীরা ক্রস-ডোমেন রিসোর্স অনুরোধ অর্জনের জন্য অনেক জটিল উপায় তৈরি করেছিল, সর্বাধিক সাধারণ উপায়গুলি হ'ল:
- দূরবর্তী সাথে যোগাযোগের জন্য "প্রক্সি" হিসাবে ফ্ল্যাশ / সিলভারলাইট বা সার্ভার সাইডটি ব্যবহার করুন।
- জেএসএন উইথ প্যাডিং ( জেএসএনপি )।
- একটি iframe এ রিমোট সার্ভার এম্বেড করে এবং খণ্ড বা উইন্ডো.নামের মাধ্যমে যোগাযোগ করে, এখানে উল্লেখ করুন ।
এই জটিল পদ্ধতিতে কমবেশি কিছু সমস্যা রয়েছে, উদাহরণস্বরূপ, জেএসওএনপি যদি সুরক্ষা গর্তের ফলস্বরূপ হতে পারে তবে বিকাশকারীরা কেবল এটিকে "বিস্মৃত" করে এবং উপরের # 3, যদিও এটি কাজ করে, উভয় ডোমেনকে একে অপরের মধ্যে কঠোর চুক্তি তৈরি করা উচিত, এটি নমনীয় বা মার্জিতও নয় neither এই প্রোগ্রামটিতে :)
ডাব্লু 3 সি এই সমস্যাটি সমাধানের একটি নিরাপদ, নমনীয় এবং একটি প্রস্তাবিত স্ট্যান্ডার্ড উপায় প্রদানের একটি স্ট্যান্ডার্ড সমাধান হিসাবে ক্রস-অরিজিন রিসোর্স শেয়ারিং (সিওআরএস) চালু করেছিল।
মেকানিজম
একটি উচ্চ স্তর থেকে আমরা কেবল সিআরএসকে ডোমেন এ থেকে ক্লায়েন্ট এজেএক্স কল এবং ডোমেন বিতে হোস্ট করা পৃষ্ঠার মধ্যে একটি চুক্তি হিসাবে বিবেচনা করতে পারি, একটি সাধারণ ক্রস-অরিজিন অনুরোধ / প্রতিক্রিয়া হ'ল:
ডোমেনা এজেএক্স অনুরোধ শিরোনাম
Host DomainB.com
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
Accept-Language en-us;
Accept-Encoding gzip, deflate
Keep-Alive 115
Origin http://DomainA.com
ডোমেনবি সাড়া শিরোনাম
Cache-Control private
Content-Type application/json; charset=utf-8
Access-Control-Allow-Origin DomainA.com
Content-Length 87
Proxy-Connection Keep-Alive
Connection Keep-Alive
উপরে বর্ণিত নীল অংশগুলি ছিল কর্নাল তথ্য, "উত্সাহ" অনুরোধ শিরোনাম "ইঙ্গিত দেয় যে ক্রস-অরিজিন অনুরোধ বা প্রিফলাইট অনুরোধটি উত্স থেকে এসেছে", "অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন" প্রতিক্রিয়া শিরোনাম নির্দেশ করে যে এই পৃষ্ঠাটি দূরবর্তী অনুরোধের অনুমতি দেয় DomainA (যদি মানটি হয় * কোনও ডোমেন থেকে দূরবর্তী অনুরোধের অনুমতি দেয়)।
আমি উপরে উল্লিখিত হিসাবে, ডাব্লু 3 প্রকৃত ক্রস-অরিজিন এইচটিটিপি অনুরোধ জমা দেওয়ার আগে একটি " প্রিফলাইট অনুরোধ " প্রয়োগের জন্য ব্রাউজারকে সুপারিশ করেছিল , সংক্ষেপে এটি একটি এইচটিটিপি OPTIONS
অনুরোধ:
OPTIONS DomainB.com/foo.aspx HTTP/1.1
Foo.aspx অপশন HTTP ক্রিয়া সমর্থন করে, এটি নীচের মত প্রতিক্রিয়া ফিরে আসতে পারে:
HTTP/1.1 200 OK
Date: Wed, 01 Mar 2011 15:38:19 GMT
Access-Control-Allow-Origin: http://DomainA.com
Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Max-Age: 1728000
Connection: Keep-Alive
Content-Type: application/json
কেবলমাত্র প্রতিক্রিয়াতে "অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিনের উত্স" থাকে এবং এর মানটি "*" হয় বা ডোমেন থাকে যারা সিওআরএস অনুরোধ জমা দিয়েছে, এই বাধ্যতামূলক শর্ত ব্রাউজারটি প্রকৃত ক্রস-ডোমেন অনুরোধ জমা দেবে এবং ফলাফলটি ক্যাশে করবে " প্রিফলাইট-ফলাফল-ক্যাশে " তে।
আমি তিন বছর আগে CORS সম্পর্কে ব্লগ করেছি: এজ্যাক্স ক্রস-অরিজিন এইচটিটিপি অনুরোধ
http://siteA/MyCode.js
।