JSONP(JSON with Padding)是一种利用 <script> 标签绕过同源策略的跨域技术,现已被 CORS 取代。

定义

通过动态创建 <script> 标签,以回调函数的形式获取跨域数据。

原理

  1. 前端定义回调函数
  2. 服务端返回函数调用包裹的数据
  3. 脚本加载时执行回调

示例

前端

function handleData(data) {
  console.log(data);
}
 
const script = document.createElement('script');
script.src = 'https://api.example.com/data?callback=handleData';
document.body.appendChild(script);

服务端响应

handleData({ name: 'Alice', age: 30 })

缺点

缺点说明
仅支持 GET无法发送 POST 请求
不安全相当于允许执行任意 JS
缺乏错误处理脚本加载失败难以捕获
不规范依赖服务端配合

现状

已不推荐使用,CORS 是现代标准解决方案。

知识网络

  • 相关概念