একটা হল তৃতীয় : বিকল্প যা আপনি দেখেন নি, ক্রস অরিজিন রিসোর্স শেয়ারিং (CORS) ।
সিওআরএস স্ট্যান্ডার্ডটি নতুন এইচটিটিপি শিরোনাম যুক্ত করে কাজ করে যা সার্ভারগুলিকে অনুমতিপ্রাপ্ত উত্স ডোমেনগুলিতে সংস্থান সরবরাহ করতে দেয়। ব্রাউজারগুলি এই শিরোলেখকে সমর্থন করে এবং তারা যে প্রতিবন্ধকতাগুলি প্রতিষ্ঠা করে তাকে সম্মান করে।
উদাহরণ : বলুন যে আপনার সাইটটি http://my-cool-site.com এবং আপনার একটি ডোমেন http://third-party-site.com এ একটি তৃতীয় পক্ষের API রয়েছে , যা আপনি এজেএক্সের মাধ্যমে অ্যাক্সেস করতে পারবেন।
এবং ধরে নেওয়া যাক যে my-cool-site.com থেকে আপনার সার্ভার করা একটি পৃষ্ঠা তৃতীয় পক্ষ-সাইট ডটকমকে একটি অনুরোধ করেছে। সাধারণত, ব্যবহারকারী ব্রাউজার একই-উত্স সুরক্ষা নীতি অনুসারে আপনার নিজস্ব ডোমেন / সাবডোমেন ছাড়া অন্য যে কোনও সাইটে এজ্যাক্স কল প্রত্যাখ্যান করবে । তবে যদি ব্রাউজার এবং তৃতীয় পক্ষের সার্ভার সিওআরএস সমর্থন করে তবে নিম্নলিখিত জিনিসগুলি ঘটে:
ব্রাউজারটি নিম্নলিখিত HTTP শিরোনামটি তৃতীয় পক্ষ-সাইট ডটকমকে প্রেরণ করবে
Origin: http://my-cool-site.com
যদি তৃতীয় পক্ষের সার্ভারটি আপনার ডোমেন থেকে অনুরোধগুলি গ্রহণ করে, তবে এটি নিম্নলিখিত HTTP শিরোনামের সাথে প্রতিক্রিয়া জানাবে:
Access-Control-Allow-Origin: http://my-cool-site.com
সমস্ত ডোমেনকে অনুমতি দেওয়ার জন্য, তৃতীয় পক্ষের সার্ভারটি এই শিরোনামটি প্রেরণ করতে পারে:
Access-Control-Allow-Origin: *
আপনার সাইটের অনুমতি না থাকলে ব্রাউজার ত্রুটি ছুঁড়ে দেবে।
যদি ক্লায়েন্টের কাছে মোটামুটি আধুনিক ব্রাউজার থাকে যা CORS সমর্থন করে এবং আপনার তৃতীয় পক্ষের সার্ভারও CORS সমর্থন করে তবে আপনি অবশ্যই আপনার কোডটিতে সামান্য পরিবর্তন আনতে পারেন।
আমি একটি পাওয়া CORS উপর চমৎকার ব্যাখ্যা : যার উপর আপনার কাছে অন্য উপায় এই কাজ করতে পাবেন jsonp । তবে জেএসএনপি-র আপনার কোডে ন্যায্য পরিমাণের পরিবর্তন দরকার।
একটি XMLHttpRequestসিওআরএস অনুরোধ করার জন্য আপনি কেবল ফায়ারফক্স 3.5.5+, সাফারি 4+ এবং ক্রোম এবং আই 8 XDomainRequest+ এ অবজেক্ট ব্যবহার করুন। XMLHttpRequestঅবজেক্ট ব্যবহার করার সময় , ব্রাউজারটি যদি দেখে যে আপনি ক্রস-ডোমেন অনুরোধ করার চেষ্টা করছেন এটি নির্বিঘ্নে CORS আচরণকে ট্রিগার করবে।
এখানে একটি জাভাস্ক্রিপ্ট ফাংশন যা আপনাকে ক্রস ব্রাউজারের CORS অবজেক্ট তৈরি করতে সহায়তা করে।
function createCORSRequest(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
// XHR has 'withCredentials' property only if it supports CORS
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined"){ // if IE use XDR
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
যেহেতু আপনি বলেছেন যে "বেশিরভাগ ব্রাউজারগুলি এক্সএমএল ক্রস-ডোমেন ব্যবহার বন্ধ করে দিয়েছে", তাই আমি অনুমান করি যে আপনার তৃতীয় পক্ষের সার্ভারটি সিওআরএস সমর্থন করবে না। তারপরে আপনাকে বিকল্প পদ্ধতির সন্ধান করতে হবে।