Javascript 创建用户后重定向不起作用

Javascript 创建用户后重定向不起作用,javascript,node.js,express,redirect,Javascript,Node.js,Express,Redirect,所以前几天我在一个网站上工作,在那里我创建了一条路线来处理用户的注册过程。当我几天前测试它时,它工作得很好 然后我在我的网站上做了一些其他的东西(登录和个人资料网站等),当我回来测试一些其他东西时(我需要创建一个新的用户帐户,因为我添加了一些东西),注册不再有效 这是我的代码: app.post('/signup', (req, res) => { if (!req.body.accept) { res.redirect('/signup?error=must_accept')

所以前几天我在一个网站上工作,在那里我创建了一条路线来处理用户的注册过程。当我几天前测试它时,它工作得很好

然后我在我的网站上做了一些其他的东西(登录和个人资料网站等),当我回来测试一些其他东西时(我需要创建一个新的用户帐户,因为我添加了一些东西),注册不再有效

这是我的代码:

app.post('/signup', (req, res) => {
  if (!req.body.accept) {
    res.redirect('/signup?error=must_accept')
  }

  // E-Mail exists in database
  connection.query('SELECT LogMail FROM u WHERE LogMail = ?;', req.body.mail, function(err, rows, fields) {
    if (err) throw err;

    if (rows.length > 0) {
      console.log('this email exists already')
    } else {
      key_pair = generate_key_pair()
      datetime = getDateTime()

      user = {
        ID_u: generate_ID(),
        Created: datetime,
        LogMail: req.body.mail,
        Verified: '0000-00-00 00:00:00',
        Password: hash_password(req.body.password),
        Token: generate_token(),
        PrivKey: encrypt_private_key(key_pair.private_key, req.body.password),
        PubKey: key_pair.public_key,
        Cookies: datetime,
        TermsOfUse: datetime,
        PrivacyPolicy: datetime,
      }

      let value = [
        [
          user.ID_u,
          user.Created,
          user.LogMail,
          user.Verified,
          user.Password,
          user.Token,
          user.PrivKey,
          user.PubKey,
          user.Cookies,
          user.TermsOfUse,
          user.PrivacyPolicy,
        ]
      ]

      decrypted_private_key = decrypt_private_key(user.PrivKey, req.body.password)

      req.session.mail = user.LogMail
      req.session.token = user.Token
      req.session.private_key = decrypted_private_key

      console.log(decrypted_private_key)

      if (req.body.stay) {
        res.cookie('mail', user.LogMail, {
          maxAge: 1000 * 86400 * 14,
          httpOnly: true
        });
        res.cookie('token', user.Token, {
          maxAge: 1000 * 86400 * 14,
          httpOnly: true
        });
        res.cookie('private_key', decrypted_private_key, {
          maxAge: 1000 * 86400 * 14,
          httpOnly: true
        })
      }

      connection.query('INSERT INTO u (ID_u, Created, LogMail, Verified, Password, Token, PrivKey, PubKey, Cookies, TermsOfUse, PrivacyPolicy) VALUES (?)', value, (err, rows, fields) => {
        if (err) throw err
      })

      res.redirect('/profile') // THE SCRIPT BREAKS HERE
      return
    }
  })
})
当我现在通过单击/signup页面上的submit按钮调用此路由时,代码运行到标记点(带有“脚本在此中断”的点),然后我的浏览器只显示502坏网关,但URL没有更改为/profile,浏览器只显示此消息


我也没有在控制台中得到任何错误代码或任何东西,它只是在那里中断,如果我在
res.redirect('/profile')
return
之前或之间执行console.log,那么它会被打印到控制台,但我没有得到任何错误,我也不知道这是什么,在这种情况下,我甚至无法在谷歌上搜索到什么…

我想我现在已经找到了答案(但我会为我获取你的任何新信息)

问题似乎是,我试图将整个RSA私钥放入cookie中,而大多数浏览器似乎无法处理

这似乎与cookie可以存储的数据量有关。在大多数浏览器上,cookie可以存储4096个字节左右,但RSA私钥似乎占用了更多空间(即使strlen函数给了我3433个字符(我假设也是3433个字节,至少我记得ASCII和Unicode)

请添加一个评论,如果你有任何想法,无论我的建议是正确的,或者如果它是由其他原因造成的


除了将RSA密钥拆分并保存在两个单独的Cookie中之外,还有更好的方法存储RSA密钥吗?

是否正确地将记录插入数据库?是的,数据显示在数据库中,每次我进行另一次测试时,我都必须删除记录,因为有一条记录包含该电子邮件,当我查找时,其他数据看起来也不错,我发现,它与行有关,我在其中设置了
res.cookie('private_key',…)
。当我把它注释掉时,我-至少-被重定向到要求的站点,但我不知道它有什么问题是的,cookies的大小是有限的:好的,但是当我将字符串一分为二(1717字节而不是3434字节)并将它们保存在两个cookies中时,它仍然不会保存它们,崩溃仍在发生,我似乎找不到解决办法……你读了第一个答案下面的评论了吗?浏览器对
集Cookie:
头的大小也有限制。