Node 作为中转站-技术鸭论坛-前端交流-技术鸭(jishuya.cn)

Node 作为中转站

前端通过接口找node要数据,node向其他服务器请求完数据返回给前端

只有浏览器存在跨域问题,node不存在

前端

<script>
        fetch('http://127.0.0.1:8080/api/user').then(res => res.json()).then(res => {
            console.log(res);
        })
</script>

后端

let http = require('http')
let https = require('https')
let url = require('url')  // 用于解析url地址

const app = http.createServer((req, res) => {
    let urlobj = url.parse(req.url, true) // 转换为对象
    console.log(urlobj);
    res.writeHead(200, {
        "Content-Type": "application/json;charset=utf-8",
        "access-control-allow-origin": "*" // 允许所有域通过控制
    })
    switch (urlobj.pathname) {
        case '/api/user':
            httpsGit((data)=>res.end(data))
            break
        default:
            res.end('404')
            break
    }
})

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

function httpsGit (response) {
    let list = ''
    https.get('https://i.maoyan.com/api/mmdb/movie/v3/list/hot.json?ct=%E5%98%89%E5%85%B4&ci=185&channelId=4',(res)=>{
        res.on("data",(data)=>{
            list+=data
        })   // 有数据返回就会触发,数据流的方式一点一点的返回
        res.on('end',()=>{  // 数据合并到一起后,end可以拿到完整数据
            response(list)
        })
    })
}

 

请登录后发表评论

    请登录后查看回复内容