JSONP 是一种跨域技术,其全称为 JSON with padding。
JSONP 由两部分组成:
JSOPN 是通过动态 <script>
元素使用的,<script>
标签能够不受限制地从其他域加载资源。
一个 JSONP 请求的格式为 url?callback=handleResponse
,handleResponse 为回调函数名称。下面举一个使用 JSOPN 的例子:
<script>
function handleResponse(data) {
console.log("data", data);
}
function handleError(event) {
cosnole.log("event", event);
}
const script = document.createElement("script");
script.src =
"https://jsonplaceholder.typicode.com/todos/1?callback=handleResponse";
script.onerror = handleResponse;
document.body.insertBefore(script, document.body.firstChild);
</script>
上面的例子中,向 script 添加了一个 onerror 事件处理函数,来确定 JSONP 请求是否失败。
需要注意的是 JSONP 仅支持 GET 请求,其优势在于对老的浏览器兼容性好。
JSONP 相关库: