JSONP (JSON with Padding) là một phương pháp thường được sử dụng để vượt qua các chính sách cross-domain trong trình duyệt web bởi vì việc gọi Ajax từ trang hiện tại đến một cross-origin domain là không được cho phép.
JSONP hoạt động bằng cách đưa ra một request đến một cross-origin domain thông qua thẻ <script> và thường với một tham số là callback query, ví dụ: https://example.com?callback=printData. Sau đó, máy chủ sẽ bọc dữ liệu trong một hàm gọi là printData và trả lại cho máy khách.
<!-- https://mydomain.com -->
<script>
function printData(data) {
console.log(`My name is ${data.name}!`);
}
</script>
<script src="https://example.com?callback=printData"></script>
// File loaded from https://example.com?callback=printData
printData({ name: 'PhongvanIT.com' });
Máy khách phải có hàm printData trong phạm vi toàn cục của nó và hàm sẽ được thực thi bởi máy khách khi nhận được phản hồi từ cross-origin domain.
JSONP có thể không an toàn và có một số tác động bảo mật. Vì JSONP thực sự là JavaScript, nó có thể làm mọi thứ khác mà JavaScript có thể làm, vì vậy bạn cần tin tưởng nhà cung cấp dữ liệu JSONP.
Ngày nay, CORS là phương pháp được khuyến nghị và JSONP được coi là một cuộc tấn công (hack).