加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Jsonp简单原理

发布时间:2020-12-16 19:46:39 所属栏目:百科 来源:网络整理
导读:先上一段使用原生js编写的jsonp script var script = document.createElement('script'); script.type = 'text/javascript'; // 传参并指定回调执行函数为onBack script.src = 'http://www.domain2.com:8080/login?user=admincallback=onBack'; document.hea

先上一段使用原生js编写的jsonp

<script>
    var script = document.createElement('script');
    script.type = 'text/javascript';

    // 传参并指定回调执行函数为onBack
    script.src = 'http://www.domain2.com:8080/login?user=admin&callback=onBack';
    document.head.appendChild(script);

    // 回调执行函数
    function onBack(res) {
        alert(JSON.stringify(res));
    }
</script>
像上面代码中请求的地址一般会返回如 onBack(...一段json...) 的数据。

如果执行包含以上代码的html页面,js会在head标签里创建一段script代码,如下所示

<script type="text/javascript" src="http://www.domain2.com:8080/login?user=admin&callback=onBack"></script>
基本上这就是完整的jsonp的写法。这其中最关键地方就是理解head中追加的script做了什么事情(或者说<script type="text/javascript" src="..."></srcipt>做了说)。

为了方便理解,我举个例子。现在我有一个文件 script.log,并且里面有一段js代码

alert("I'm javascript in log file")

然后在同级目录下我有一段html页面,代码如下

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="script.log"></script>
</head>

<body>
</body>

</html>

在浏览器中打开这个html会有如下弹出框

到这里也就不难理解script标签的作用了。也就是说script请求src的链接(这里是log结尾的文件),并将请求的结果以js的方式执行。而jsonp就是利用script标签不受同源策略的特性,实行跨域请求,执行请求到的js代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读