修复以双斜杠开头的 WhatsApp 无限重定向

Fix WhatsApp infinite redirection starting with double slashes

我有一个网络服务器,路由如下:

router.get("/inicio", async (req, res) => {
  // logic ...
  return res.render("template");
}

以及其他一切的路线:

app.get("*", async (req, res) => {
  await authentication.getLocalInfo(req);
  return res.redirect("/404");
});

当我在 WhatsApp 上与“https://emocoes.org/inicio”分享我的网站时,服务器快速连续记录以下请求,服务器日志中大约有 70 MB 的文本- 无限循环:

2022-03-06T10:26:16.176Z - //inicio 
2022-03-06T10:26:16.334Z - //inicio/404 
2022-03-06T10:26:16.492Z - //inicio/404/404 
2022-03-06T10:26:16.652Z - //inicio/404/404/404 
2022-03-06T10:26:16.801Z - //inicio/404/404/404/404 
2022-03-06T10:26:17.027Z - //inicio/404/404/404/404/404 
2022-03-06T10:26:17.191Z - //inicio/404/404/404/404/404/404 
2022-03-06T10:26:17.329Z - //inicio/404/404/404/404/404/404/404 
2022-03-06T10:26:17.520Z - //inicio/404/404/404/404/404/404/404/404 
2022-03-06T10:26:17.789Z - //inicio/404/404/404/404/404/404/404/404/404 
2022-03-06T10:26:17.955Z - //inicio/404/404/404/404/404/404/404/404/404/404 
2022-03-06T10:26:18.093Z - //inicio/404/404/404/404/404/404/404/404/404/404/404 
...

另一个例子:/diadopai 应该重定向到 /registo 而不是重定向到不存在的 /diadopai/registo,等等。

我怎样才能让 WhatsApp 请求正确的路线,或者避免这种近乎无限的循环?

您的重定向不是绝对的,而是以当前路径为基础。试试这个:

return res.redirect(req.protocol + "://" + req.headers.host + "/404");

另外,你应该创建一个路由来处理 /404 否则它会无限循环自己。这应该显示错误页面等,并且不应重定向到新的任何地方。