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

发布于 2022-09-11 16:57:28 字数 1104 浏览 14 评论 0

如题:
我使用的是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
  } // 为时已晚

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文