鍍金池/ 問答/網(wǎng)絡(luò)安全/ JSONP后端返回的回調(diào)函數(shù)是怎么執(zhí)行的?

JSONP后端返回的回調(diào)函數(shù)是怎么執(zhí)行的?

前端代碼

<script>
function test(data) {
    console.log(data.name);
}
</script>
<script src="http://127.0.0.1:8088/jsonp?callback=test"></script>

后端返回

res.end('test({"name": "Monkey"})');

以上就實(shí)現(xiàn)了JSONP跨域,前端正常打印出了"Monkey"

我的問題是:這個(gè)后端返回的字符串函數(shù)test是怎么執(zhí)行的?在前端什么時(shí)候、哪里執(zhí)行的?搞不明白,請大神解答,感謝!

回答
編輯回答
陌如玉

jsonp原理

簡單來講就是

前端調(diào)用接口<script src="http://127.0.0.1:8088/jsonp?callback=test"></script>
+后端返回test({"name": "Monkey"})
等同于
<script>test({"name": "Monkey"})</script>

2017年9月4日 21:49
編輯回答
不討喜

jsonp的原理就是動(dòng)態(tài)加載js,從后端加載過來一段js,如你的test({"name": "Monkey"}),然后執(zhí)行

2018年9月20日 22:49
編輯回答
情已空

下面那個(gè)script標(biāo)簽執(zhí)行的

2017年9月4日 15:15
編輯回答
綰青絲

因?yàn)閟cript標(biāo)簽請求到的內(nèi)容會(huì)自動(dòng)執(zhí)行。

就好像你引用一個(gè)jquery.js一樣,請求到的也是一段jquery文本內(nèi)容,請求完畢后就會(huì)執(zhí)行該內(nèi)容,頁面中就有jquery了。
2017年7月14日 02:05
編輯回答
別硬撐

放在那里都可以 只要請求到數(shù)據(jù)就會(huì)調(diào)用

2017年1月6日 11:29