jQuery অ্যাজাক্স নোটস
- ব্রাউজার সুরক্ষা বিধিনিষেধের কারণে, বেশিরভাগ অ্যাজাক্স অনুরোধগুলি একই উত্স নীতি সাপেক্ষে ; অনুরোধটি কোনও অন্য ডোমেন, সাবডোমেন, পোর্ট বা প্রোটোকল থেকে সাফল্যের সাথে ডেটা পুনরুদ্ধার করতে পারে না।
- স্ক্রিপ্ট এবং জেএসএনপি অনুরোধগুলি একই উত্স নীতি সীমাবদ্ধতার অধীন নয়।
ক্রস-ডোমেন বাধা অতিক্রম করার কিছু উপায় রয়েছে :
কিছু প্লাগইন রয়েছে যা ক্রস-ডোমেন অনুরোধগুলিতে সহায়তা করে:
মাথা উঁচু করে!
এই সমস্যাটি কাটিয়ে ওঠার সর্বোত্তম উপায় হ'ল ব্যাক-এন্ডে আপনার নিজস্ব প্রক্সি তৈরি করা, যাতে আপনার প্রক্সিটি অন্য ডোমেনগুলির পরিষেবাগুলিতে নির্দেশ করবে কারণ ব্যাক-এন্ডে একই উত্স নীতি সীমাবদ্ধতা বিদ্যমান নেই । তবে যদি আপনি ব্যাক-এন্ডে এটি করতে না পারেন তবে নিম্নলিখিত টিপসগুলিতে মনোযোগ দিন।
সতর্কবাণী!
তৃতীয় পক্ষের প্রক্সিগুলি ব্যবহার করা কোনও নিরাপদ অনুশীলন নয়, কারণ তারা আপনার ডেটা ট্র্যাক করতে পারে, তাই এটি জনসাধারণের তথ্যের সাথে ব্যবহার করা যেতে পারে, তবে কখনও ব্যক্তিগত ডেটা ব্যবহার করে না।
কোড উদাহরণ নিচে ব্যবহার দেখানো jQuery.get () এবং jQuery.getJSON () , উভয়ের সাধারণভাবে সংক্ষেপে পদ্ধতি jQuery.ajax ()
কর্স যে কোনও জায়গায় Any
CORS যে কোনও জায়গায় একটি নোড.জেএস প্রক্সি যা প্রক্সাইড অনুরোধে সিওআরএস শিরোনাম যুক্ত করে।
এপিআই ব্যবহার করতে, কেবলমাত্র ইউআরএল ইউআরএলটি সহ প্রিফিক্স করুন। (সমর্থন HTTPS : দেখুন GitHub সংগ্রহস্থলের )
যদি প্রয়োজন হয় তবে স্বয়ংক্রিয়ভাবে ক্রস-ডোমেন অনুরোধগুলি সক্ষম করতে চাইলে নীচের স্নিপেটটি ব্যবহার করুন:
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
//options.url = "http://cors.corsproxy.io/url=" + options.url;
}
});
$.get(
'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
আদি যাই হোক না কেন
অরিজিন যাই হোক না কেন এটি ক্রস ডোমেন জসনপ অ্যাক্সেস। এটি anyorigin.com এর ওপেন সোর্স বিকল্প ।
Google.com থেকে ডেটা আনতে , আপনি এই স্নিপেটটি ব্যবহার করতে পারেন:
// It is good specify the charset you expect.
// You can use the charset you want instead of utf-8.
// See details for scriptCharset and contentType options:
// http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
$.ajaxSetup({
scriptCharset: "utf-8", //or "ISO-8859-1"
contentType: "application/json; charset=utf-8"
});
$.getJSON('http://whateverorigin.org/get?url=' +
encodeURIComponent('http://google.com') + '&callback=?',
function (data) {
console.log("> ", data);
//If the expected response is text/plain
$("#viewer").html(data.contents);
//If the expected response is JSON
//var response = $.parseJSON(data.contents);
});
CORS প্রক্সি
কোনও ওয়েবসাইটের জন্য সিওআর অনুরোধ সক্ষম করার জন্য সিওআরএস প্রক্সি একটি সাধারণ নোড.জেএস প্রক্সি । এটি আপনার সাইটে জাভাস্ক্রিপ্ট কোডটিকে অন্য ডোমেনগুলির সংস্থানগুলিতে অ্যাক্সেস করার অনুমতি দেয় যা সাধারণত একই-উত্স নীতিমালার কারণে অবরুদ্ধ থাকে।
এটা কিভাবে কাজ করে? সিওআরএস প্রক্সি ক্রস-অরিজিন রিসোর্স ভাগ করে নেওয়ার সুবিধা গ্রহণ করে যা এইচটিএমএল 5-এর সাথে যুক্ত করা একটি বৈশিষ্ট্য যা সার্ভারগুলি নির্দিষ্ট করতে পারে যে তারা ব্রাউজারগুলি অন্য ওয়েবসাইটগুলিকে তারা হোস্ট করা সংস্থানগুলির অনুরোধ করতে মঞ্জুর করতে চায়। সিওআরএস প্রক্সি কেবল একটি এইচটিটিপি প্রক্সি যা "যে কেউ এটির জন্য অনুরোধ করতে পারে" বলে প্রতিক্রিয়াগুলিতে শিরোনাম যুক্ত করেছে adds
এটি লক্ষ্য অর্জনের অন্য উপায় ( www.corsproxy.com দেখুন )। আপনাকে যা করতে হবে তা হ'ল স্ট্রিপ http: // এবং www। ইউএসএল থেকে অনুমান করা হচ্ছে এবং এর সাথে ইউআরএল প্রিপেন্ড করুনwww.corsproxy.com/
$.get(
'http://www.corsproxy.com/' +
'en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
CORS প্রক্সি ব্রাউজার
সম্প্রতি আমি এটি পেয়েছি, এটিতে বিভিন্ন সুরক্ষামুখী ক্রস অরিজিন রিমোট শেয়ারিং ইউটিলিটি জড়িত। এটি ব্যাকএন্ড হিসাবে ফ্ল্যাশ সহ একটি কালো বাক্স।
আপনি এটি এখানে ক্রিয়াতে দেখতে পারেন: সিওআরএস প্রক্সি ব্রাউজারটি
গিটহাবের উত্স কোড পান: কোটো / কর্স-প্রক্সি-ব্রাউজার