发送授权后连接超时

时间:2019-05-27 13:07:47

标签: javascript node.js express oauth-2.0 facebook-authentication

我使用Oauth 2.0在Express / node应用程序中实现了Facebook,LinkedIn和Google策略。

在快速连接(以太网电缆和4G移动设备)上工作正常。但是,在连接速度较慢的情况下(例如wi-fi),它在收到授权代码后会一直挂起。

服务器日志显示GET / auth / facebook 302,什么也没有发生。

工作正常时,它会触发回调路由“ / auth / facebook / callback”。

这是浏览器上的网址:

https://www.mywebsite.com/auth/facebook/callback?code=AQA7wUUnGkpsdFVs-PggQIbd809iOQ_B57oTSoKWmOe0JH9dsu4DI12IPP9Rr2jdVhSsWNexbhCy_Euy9pD0NGliY_zMEN3VPdRkiA4pnkeDLJyqWluuMxg4-khWagrKidgIK0GQW7-0MHkrCEyMvAnAucyNB5fnc2J2_byLSB6ELrfsBe-52jA4eLR6RFIshdLlO9qxTJmGH0JGU74a5zTNET9S52PaCUk6wEZD35Wl9zCLb5aaklOMiGm8JyW2KuoZnYkNYCEW6Yggr35eokXsMeJwqp_q2_qP4RQv82dhL47ZRX_da4MOPDPkyYTA4dc#=

它显示错误“连接超时”。

我可以跟踪流量卡在哪里。

 router.get('/facebook', passport.authenticate('facebook', {
  scope : ['email']
}));

调试护照代码,我发现这是流停止时执行的最后一个代码块(文件authenticate.js)。

 strategy.redirect = function(url, status) {
        // NOTE: Do not use `res.redirect` from Express, because it can't decide
        //       what it wants.
        //
        //       Express 2.x: res.redirect(url, status)
        //       Express 3.x: res.redirect(status, url) -OR- res.redirect(url, status)
        //         - as of 3.14.0, deprecated warnings are issued if res.redirect(url, status)
        //           is used
        //       Express 4.x: res.redirect(status, url)
        //         - all versions (as of 4.8.7) continue to accept res.redirect(url, status)
        //           but issue deprecated versions

        res.statusCode = status || 302;
        res.setHeader('Location', url);
        res.setHeader('Content-Length', '0');
        res.end();
      };

我使用两个不同的连接(移动4G和wifi)在移动设备上进行了Google登录。它可以在Mobile 4G上运行,而无法在wifi上运行。我在res.end之前打印了res.req.headers,这些是结果

何时有效

{
  host: 'mywebsite.com:60900',
  connection: 'keep-alive',
  'upgrade-insecure-requests': '1',
  'save-data': 'on',
  'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; XT1635-02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
  referer: 'https://mywebsite.com:60900',
  'accept-enconding': 'gzip, deflate, br',
  'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,es;q=0.7',
  cookie: 'connect.sid=s%3APk6cDtP8eFK2EHlQna68DmTDEaRLoTo4.BLnv%2F20SzBlP%2F9HFfD2wTw8WwqVgbSqYJEVauJ3zsel'
}

当它不起作用时。

{
  host: '127.0.0.1:60900',
  connection: 'close',
  'upgrade-insecure-requests': '1',
  'save-data': 'on',
  'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; XT1635-02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
  'accept-enconding': 'gzip, deflate, br',
  'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,es;q=0.7',
  cookie: 'connect.sid=s%3APk6cDtP8eFK2EHlQna68DmTDEaRLoTo4.BLnv%2F20SzBlP%2F9HFfD2wTw8WwqVgbSqYJEVauJ3zsel'
}

0 个答案:

没有答案