Node实现Jsonp-技术鸭论坛-前端交流-技术鸭(jishuya.cn)

Node实现Jsonp

因为script不存在跨域问题,所以可以用script发get请求

前端动态创建script标签,并设置url地址,定义好函数,并传递函数名给后端.

后端拿到函数名返回函数调用,调用前端准备好的函数,前端就可以拿到数据了

后端node

let http = require('http') // 创建服务器
let url = require('url')  // 用于解析url地址

const app = http.createServer((req,res)=>{
    let urlobj = url.parse(req.url,true) // 转换为对象
    console.log(urlobj);
    switch (urlobj.pathname) {
        case '/api/user' : 
            // 获取前端传递过来的函数名,传递一个函数调用
            res.end(`${urlobj.query.callback}(${JSON.stringify({"name":"技术鸭"})})`)
            break
         default:
           res.end('404')
          break
    }
})

app.listen(8080,()=>{
console.log('localhost:8080')
})

前端

let script0 = document.createElement('script'); // 创建script
script0.src = 'http://127.0.0.1:8080/api/user?callback=objList' //设置src
document.body.appendChild(script0); // 添加到页面
function objList(a) {  // 定义函数接受
     console.log(a);
}
请登录后发表评论

    请登录后查看回复内容