在项目复杂的业务场景,有时候需要在前端跨域获取数据,这时候提供数据的服务就需要提供跨域请求的接口,通常是使用JSONP的方式提供跨域接口。
原生koa2实现jsonp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| const Koa = require('koa2') const app = new Koa()
app.use(async ctx=>{ if(ctx.method === 'GET' && ctx.url.split('?')[0] === '/getData.jsonp'){ let callbackName = ctx.query.callback || 'callback' let returnData = { success:true, data:{ text:'this is a jsonp api', time: new Date().getTime() } }
let jsonpStr = `;${callbackName}(${JSON.stringify(returnData)})`
ctx.type = 'text/javascript'
ctx.body = jsonpStr }else{ ctx.body = 'hello jsonp' }
}) app.listen(3000)
|
koa-jsonp中间件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| const Koa =require('koa2') const jsonp = require('koa-jsonp') const app = new Koa()
app.use(jsonp())
app.use(async ctx=>{ let returnData = { success: true, data:{ text:'this si a jsonp api', time: new Date().getTime } }
ctx.body = returnData })
app.listen(3000)
|
评论加载中