document.domainপদ্ধতি
নোট করুন যে এটি একটি iframe পদ্ধতি যা ডকুমেন্ট.ডোমেনের মান বর্তমান ডোমেনের প্রত্যয় হিসাবে সেট করে। যদি এটি হয় তবে সংক্ষিপ্ত ডোমেনটি পরবর্তী উত্স পরীক্ষার জন্য ব্যবহৃত হবে। উদাহরণস্বরূপ, http://store.company.com/dir/other.htmlনিম্নলিখিত বিবৃতিটি সম্পাদন করে নথিতে একটি স্ক্রিপ্ট ধরে নিন :
document.domain = "company.com";
এই বিবৃতি কার্যকর হওয়ার পরে, পৃষ্ঠাটি মূল চেকটি পাস করবে http://company.com/dir/page.html। যাইহোক, একই যুক্তি দ্বারা, সংস্থা ডটকম সেট document.domain করতে পারেনি othercompany.com।
এই পদ্ধতির সাহায্যে, আপনাকে প্রধান ডোমেনে উত্সাহিত কোনও পৃষ্ঠায় সাবডোমেনে উত্সাহিত একটি iframe থেকে জাভাস্ক্রিপ্ট সন্ধান করার অনুমতি দেওয়া হবে। ক্রস-ডোমেন সংস্থানগুলির জন্য এই পদ্ধতিটি উপযুক্ত নয় কারণ ফায়ারফক্সের মতো ব্রাউজারগুলি আপনাকে document.domainসম্পূর্ণ এলিয়েন ডোমেনে পরিবর্তন করতে দেয় না ।
সূত্র: https://developer.mozilla.org/en/Same_origin_policy_for_ জাভা স্ক্রিপ্ট
ক্রস-অরিজিন রিসোর্স ভাগ করে নেওয়ার পদ্ধতি
ক্রস-অরিজিন রিসোর্স শেয়ারিং (সিওআরএস) একটি ডাব্লু 3 সি ওয়ার্কিং ড্রাফ্ট যা সংজ্ঞা দেয় যে উত্স জুড়ে উত্সগুলিতে অ্যাক্সেস করার সময় ব্রাউজার এবং সার্ভারকে কীভাবে যোগাযোগ করতে হবে। সিওআরএসের পিছনে মূল ধারণাটি হ'ল কাস্টম এইচটিটিপি শিরোনাম ব্যবহার করে ব্রাউজার এবং সার্ভার উভয়কে একে অপরের সম্পর্কে পর্যাপ্ত পরিমাণে তা জানতে নির্ধারণ করতে অনুরোধ বা প্রতিক্রিয়া সফল হতে পারে বা ব্যর্থ হওয়া উচিত।
একটি সাধারণ অনুরোধের জন্য, যা ব্যবহার করে GETবা POSTকাস্টম শিরোনামহীন এবং যার দেহ হয় text/plain, অনুরোধটি অতিরিক্ত শিরোনাম সহ প্রেরণ করা হয় Origin। অরিজিন শিরোনামটিতে অনুরোধ পৃষ্ঠার উত্স (প্রোটোকল, ডোমেন নাম এবং পোর্ট) রয়েছে যাতে সার্ভারটি সহজেই নির্ধারণ করতে পারে যে এটির কোনও প্রতিক্রিয়া পরিবেশন করা উচিত কি না। একটি উদাহরণ Originশিরোনাম এর মত দেখতে হতে পারে:
Origin: http://www.stackoverflow.com
যদি সার্ভার সিদ্ধান্ত নেয় যে অনুরোধটি মঞ্জুর করা উচিত তবে এটি একটি Access-Control-Allow-Originশিরোনাম প্রেরণ করে যে একই উত্সটি প্রেরণ করা হয়েছিল বা *এটি যদি কোনও জনসাধারণের উত্স হয় তবে back উদাহরণ স্বরূপ:
Access-Control-Allow-Origin: http://www.stackoverflow.com
যদি এই শিরোলেখটি অনুপস্থিত থাকে, বা উত্সগুলি মেলে না, তবে ব্রাউজারটি অনুরোধটিকে অস্বীকার করে। যদি সবকিছু ঠিক থাকে তবে ব্রাউজারটি অনুরোধটি প্রক্রিয়া করে। নোট করুন যে অনুরোধ বা প্রতিক্রিয়াগুলির মধ্যে কুকির তথ্য অন্তর্ভুক্ত নয়।
মোজিলা টিম তাদের পোস্টগুলিতে সিওআরএস সম্পর্কে পরামর্শ দেয় যে withCredentials ব্রাউজারটি এক্সএইচআর এর মাধ্যমে CORS সমর্থন করে কিনা তা নির্ধারণ করার জন্য আপনার সম্পত্তিটির অস্তিত্ব পরীক্ষা করা উচিত । তারপরে আপনি XDomainRequestসমস্ত ব্রাউজারগুলি কভার করতে অবজেক্টটির অস্তিত্ব নিয়ে দম্পতি করতে পারেন :
function createCORSRequest(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined"){
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
var request = createCORSRequest("get", "http://www.stackoverflow.com/");
if (request){
request.onload = function() {
// ...
};
request.onreadystatechange = handler;
request.send();
}
নোট করুন যে সিওআরএস পদ্ধতিটি কাজ করার জন্য আপনার কোনও ধরণের সার্ভার হেডার মেকানিকের অ্যাক্সেস থাকা দরকার এবং কেবল কোনও তৃতীয় পক্ষের সংস্থান অ্যাক্সেস করতে পারবেন না।
সূত্র: http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
window.postMessageপদ্ধতি
window.postMessage, যখন ডাকা হয়, MessageEventলক্ষ্য উইন্ডোতে একটি প্রেরণের কারণ ঘটায় যখন নির্ধারিত কোনও স্ক্রিপ্ট যা কার্যকর করা আবশ্যক তা সম্পূর্ণ হয় (উদাহরণস্বরূপ ইভেন্ট হ্যান্ডলার window.postMessageথেকে পূর্বে নির্ধারিত মুলতুবি থাকা সময়সীমা ইত্যাদি) যদি বাকি ইভেন্ট হ্যান্ডলারগুলি ডাকা হয়। MessageEventমেসেজ টাইপ করুন, একটি হয়েছে dataসম্পত্তি যা প্রদান করা প্রথম যুক্তির স্ট্রিং মান সেট করা হয় window.postMessageএকটি, originসম্পত্তি জানালা কলিং প্রধান নথির মূল সংশ্লিষ্ট window.postMessageসময়ে window.postMessageবলা হয়, এবং একটি sourceসম্পত্তি যা থেকে উইন্ডো যাকে window.postMessageবলা হয়।
ব্যবহার করতে window.postMessage, একটি ইভেন্ট শ্রোতা অবশ্যই সংযুক্ত থাকতে হবে:
// Internet Explorer
window.attachEvent('onmessage',receiveMessage);
// Opera/Mozilla/Webkit
window.addEventListener("message", receiveMessage, false);
এবং একটি receiveMessageফাংশন অবশ্যই ঘোষণা করতে হবে:
function receiveMessage(event)
{
// do something with event.data;
}
অফ-সাইট আইফ্রেমে অবশ্যই অনুষ্ঠানের মাধ্যমে যথাযথ প্রেরণ করতে হবে postMessage:
<script>window.parent.postMessage('foo','*')</script>
উইন্ডোটিতে নথির অবস্থান নির্বিশেষে যে কোনও উইন্ডো অন্য যে কোনও উইন্ডোতে এই পদ্ধতিটি অ্যাক্সেস করতে পারে, কোনও বার্তা প্রেরণে। ফলস্বরূপ, বার্তা গ্রহণ করতে ব্যবহৃত যে কোনও ইভেন্ট শ্রোতার অবশ্যই প্রথমে উত্স এবং সম্ভাব্য উত্স বৈশিষ্ট্য ব্যবহার করে বার্তা প্রেরকের পরিচয় পরীক্ষা করতে হবে। এটি সংক্ষিপ্ত করা যায় না: সম্ভাব্য বৈশিষ্ট্যগুলি পরীক্ষা করতে ব্যর্থতা ক্রস-সাইট স্ক্রিপ্টিং আক্রমণকে সক্ষম করে।originsource
সূত্র: https://developer.mozilla.org/en/DOM/window.postMessage