NodeJS 路由是相对的还是根相对的,具体取决于用户代理

问题描述

我有一个带有此路由的 NodeJS 服务器:

require('log-timestamp');

router.get('/home',async (req,res) => {
  console.log(req.originalUrl," :: ",req.get('User-Agent'));
  console.log("Home: /home");
  res.render('home');
});

router.get("//home",(req,res) => {
  console.log("Buggy: //home");
  res.redirect("/home");
});

router.get("/",req.get('User-Agent'));
  console.log("Here: /");
  res.redirect("/home");
});

行为因用户代理而异。如果我在 Whatsapp 上共享网站的根目录,日志显示 NodeJS 复合路由并使它们相对于前一个(/,然后 //home,然后 //home/home,然后 { {1}}):

[2020-12-19T13:18:51.159Z] /  ::  WhatsApp/2.2049.10 N
[2020-12-19T13:18:51.161Z] Here: /
GET / 302 7.251 ms - 27
[2020-12-19T13:18:51.412Z] Buggy: //home
GET //home 302 1.731 ms - 27
[2020-12-19T13:18:51.656Z] //home/home  ::  WhatsApp/2.2049.10 N
GET //home/home 404 435.474 ms - 6592
GET /images/logo_400x400_whatsapp_shared_image_EN.png 200 2.909 ms - 36671

如果我在浏览器中打开网站的根目录,日志会显示 日志显示 NodeJS 使用相对于站点根目录的每个路由(404,然后是 /):

[2020-12-19T13:22:12.745Z] /  ::  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0
[2020-12-19T13:22:12.746Z] Here: /
GET / 302 1.476 ms - 54
[2020-12-19T13:22:12.893Z] /home  ::  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0
[2020-12-19T13:22:12.927Z] Home: /home

该行为并不重要,因为 Whatsapp 只需要共享图片,而 404 页面确实包含该图片。

为什么会这样?我该如何解决?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)