Nodejs koa2基于jsonp方式实现跨域请求

JSONP原理

利用<script>标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的 JSON 数据。JSONP请求一定需要对方的服务器做支持才可以。

限制

JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

koa2代码:

router.get('/getData.jsonp', async ctx => {
  // 获取jsonp的callback
  let callbackName = ctx.query.callback || 'callback'
  let returnData = {
    success: true,
    data: {
      text: 'this is a jsonp api',
      time: new Date().getTime(),
    }
  }
  // jsonp的script字符串
  let jsonpStr = `;${callbackName}(${JSON.stringify(returnData)})`
  // 用text/javascript,让请求支持跨域获取
  ctx.type = 'text/javascript'
  // 输出jsonp字符串
  ctx.body = jsonpStr
})

效果:

1.postman请求:
在这里插入图片描述
2.在其他网站进行跨域请求:

$.ajax({
      url: 'http://localhost:3000/tagname/getData.jsonp',
      type: 'GET',
      dataType: 'JSONP',
      success: function (res) {
        console.log(res)
      }
    })

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值