JSONP (JavaScript Object Notation with Padding) হল একটি ডাটা ফরম্যাট যা Ajax এর মাধ্যমে ক্রস-ডোমেইন রিকোয়েস্ট করতে ব্যবহৃত হয়। Ajax রিকোয়েস্ট সাধারণত একই ডোমেইনে সীমাবদ্ধ থাকে (Same-Origin Policy)। JSONP এই সীমাবদ্ধতা অতিক্রম করার একটি পদ্ধতি, যা সাইটগুলোকে এক ডোমেইন থেকে অন্য ডোমেইনে ডেটা রিকোয়েস্ট করতে সক্ষম করে।
JSONP একটি GET রিকোয়েস্ট ব্যবহার করে কাজ করে। এটি সরাসরি একটি <script>
ট্যাগ যুক্ত করে জাভাস্ক্রিপ্ট কোড হিসেবে সার্ভার থেকে ডেটা লোড করে। JSONP রেসপন্স সার্ভার থেকে একটি ফাংশন কল হিসেবে আসে যা ক্লায়েন্ট সাইডে ডেটা প্রসেস করে। এটি কাজ করে নিম্নলিখিত ধাপে:
<script>
ট্যাগ ব্যবহার করে JSONP রিকোয়েস্ট করা হয় এবং সেই সাথে সেই callback function এর নাম পাঠানো হয়।<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSONP Example</title>
</head>
<body>
<h1>JSONP Example</h1>
<button onclick="fetchData()">Fetch Data</button>
<div id="data-container">
<!-- ডেটা এখানে দেখানো হবে -->
</div>
<script>
// Callback function যা JSONP রেসপন্স হ্যান্ডল করবে
function handleResponse(data) {
var container = document.getElementById('data-container');
container.innerHTML = 'Name: ' + data.name + ', Age: ' + data.age;
}
// JSONP রিকোয়েস্ট পাঠানোর ফাংশন
function fetchData() {
var script = document.createElement('script');
script.src = 'https://example.com/api?callback=handleResponse';
document.body.appendChild(script);
}
</script>
</body>
</html>
ব্যাখ্যা:
handleResponse
ফাংশনটি সার্ভার থেকে প্রাপ্ত JSONP ডেটা প্রসেস করে।fetchData()
ফাংশন একটি <script>
ট্যাগ তৈরি করে এবং সেটি ডকুমেন্টে যোগ করে। এর মাধ্যমে ব্রাউজার সার্ভার থেকে জাভাস্ক্রিপ্ট রেসপন্স লোড করে।handleResponse
ফাংশন কল করে এবং ডেটা প্রসেস করে।handleResponse({"name": "John", "age": 30});
<script>
ট্যাগ ব্যবহার করে এবং একটি callback ফাংশন কল করে।<script>
ট্যাগের মাধ্যমে সরাসরি জাভাস্ক্রিপ্ট লোড করে। যদি সার্ভার হ্যাক হয়ে যায় বা ম্যালিশিয়াস কোড পাঠায়, তাহলে সেটি ক্লায়েন্ট সাইডে এক্সিকিউট হবে।<script>
ট্যাগ ব্যবহার করে JSON ডেটা একটি callback function এর মাধ্যমে প্রসেস করা হয়।JSONP এখনও অনেক ক্ষেত্রে ব্যবহার করা হয়, তবে নিরাপত্তা এবং ফ্লেক্সিবিলিটির জন্য CORS (Cross-Origin Resource Sharing) বর্তমানে JSONP এর একটি আধুনিক বিকল্প হিসেবে বেশি ব্যবহৃত হয়। CORS Ajax রিকোয়েস্টের জন্য আরও বেশি নিরাপত্তা এবং নিয়ন্ত্রণ প্রদান করে।
Read more