我们可以通过node.js检测请求类型(来自html或用户客户端)

时间:2017-09-02 03:27:58

标签: javascript node.js

我正在构建一个文件路径,由于客户不同,我想要采取不同的行动,这就是我的计划

if (userclient) {
  res.send(<a>View it here</a> <a>download it here</a>);
} else {
  res.send(data);
  //       ^^^^ data is a variable of the file that we're serving
}

所以我希望上面的代码可以提供一个HTML,让用户选择下载或查看它,但是为bot / API / HTML链接提供文件(<link src="/path/to/style.css">),但我怎样才能检测到它&#39; sa用户客户端,而不是请求样式表或其他的HTML文件?

1 个答案:

答案 0 :(得分:1)

没有完美的解决方案,但您可以使用User agent来检测它是什么类型的客户端。

例如,您的典型浏览器用户代理看起来像Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36(这是我目前在Chrome上的用户代理)

Google的机器人代理是Googlebot/2.1 (+http://www.google.com/bot.html),而从PHP服务器发送的请求的用户代理是空白的(默认情况下)。您可以将所有请求视为机器人,除了包含单词&#34; Chrome&#34;,&#34; Mozilla&#34;,&#34; AppleWebKit&#34;,&#34; Safari&#34;等等。

虽然,你可能 只有两个单独的页面,一个用于你的API,一个用于用户。这样可以防止任何并发症和混乱。请记住,也可以更改您的用户代理,因此机器人可以拥有一个看起来像用户的用户代理,而用户可以拥有一个看起来像机器人的用户代理。