为了账号安全,请及时绑定邮箱和手机立即绑定

关于jsonp跨域报错的问题

关于jsonp跨域报错的问题

www说 2019-03-20 16:19:26
前端$.ajax({    type: "GET",    url: "localhost:3000/getData.jsonp",    dataType: "jsonp",    success: function(data) {      console.log(data)    }});nodeconst Koa = require('koa')const app = new Koa()app.use(async(ctx) => {    console.log(ctx.method);    ctx.set("Access-Control-Allow-Origin", "*");    /*星号表示所有的异域请求都可以接受,*/    ctx.set("Access-Control-Allow-Methods", "GET,POST");    // 如果jsonp 的请求为GET    if (ctx.method === 'GET' && ctx.url.split('?')[0] === '/getData.jsonp') {        console.log(ctx.query)        // 获取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    } else {        ctx.body = 'hello jsonp'    }})app.listen(3000, () => {    console.log('[demo] jsonp is starting at port 3000')})浏览器访问报错,控制台里面后台都没打印node端没打印东西,node里面应该是没走到那里大神们,请帮助啊
查看完整描述

4 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

jsonp 没有跨域的问题。


查看完整回答
反对 回复 2019-04-01
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

ctx.url.split('?')[0] === '/getData.jsonp'这句话能通过?


查看完整回答
反对 回复 2019-04-01
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

题主你的请求方式有问题,建议谷歌一下jsonp是怎么请求数据的


查看完整回答
反对 回复 2019-04-01
  • 4 回答
  • 0 关注
  • 346 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号