使用Koa2做OAuth,浏览器未等待服务器拿到OAuth服务器的数据返回呢,就报了404

如题:
我使用的是Github的OAuth,
当浏览器请求过来的时候,
我本想向github发异步请求验证,
但是浏览器没等我从github上get到信息并response给浏览器,
浏览器就报了404,
又过了几秒,koa也fetch到了OAuth服务器的正常数据,但实则早已与浏览器断开连接.
这是为什么..

代码如下:

let result = await fetch(path, { 
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(params)
  })
  let body = await result.text()
  //解析字符串获取accesstoken
  let resultArray = body.split('&')
  let resultObj = {}
  resultArray.forEach(element => {
    let key = element.split('=')[0]
    let value = element.split('=')[1]
    resultObj[key] = value
  });
  //没有accesstoken的情况
  if (!resultObj.access_token) {
    ctx.response.body = {
      code: '404',
      data: resultObj
    }
    return
  }
  let access_token = resultObj.access_token
  let userInfo = await fetch('https://api.github.com/user?access_token=' + access_token)
  let userData = await userInfo.json()
  console.log('success to get userData', userData) // 在浏览器404之后才返回正确的用户信息
  ctx.response.body = {
    code: '200',
    data: userData
  } // 为时已晚

阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题