溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ajax跨域之jsonp

發(fā)布時(shí)間:2020-07-30 08:59:18 來(lái)源:網(wǎng)絡(luò) 閱讀:477 作者:web_0315 欄目:web開發(fā)

跨域之jsonp

jsonp跨域原理

script便簽可以跨域,基于這個(gè)機(jī)制,可以在A域的頁(yè)面中定義jsonp函數(shù),script標(biāo)簽返回這個(gè)函數(shù)的調(diào)用

如下代碼所示
A域頁(yè)面代碼

<body>
<div>正在獲取數(shù)據(jù)……</div>
<script>function jsonp(data) {
    document.querySelector('div').innerHTML = data;
    }
</script>
<!--向B域請(qǐng)求數(shù)據(jù)-->
<script src="http://127.0.0.1:3000/data.js"></script>
</body>

B域服務(wù)器代碼


const Koa = require('koa')
const bodyParser = require('koa-bodyparser')
const app = new Koa()
const util = require('./util')
// bodyParser 插件,處理 post 提交過來(lái)的數(shù)據(jù)
app.use(bodyParser())
app.use(async ctx => {
const url = ctx.url
util.log(`訪問地址:${url};請(qǐng)求方法:${ctx.method}`)
if (url.indexOf('/data.js') === 0) { // 首頁(yè)
ctx.set('Content-Type', 'application/x-javascript')
ctx.body = `${ctx.query.callback || 'jsonp'}("哈哈哈哈,JSONP 可以的!")`//返回方法的調(diào)用
} else {
ctx.status = 404
ctx.body = '404'
}
})
app.listen(3000, () => {
util.log('服務(wù)啟動(dòng),打開 http://127.0.0.1:3000/')
})

結(jié)果如下:
ajax跨域之jsonp

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI