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

标签 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"> )提供文件,但我如何检测它是用户客户端,而不是HTML 文件请求样式表或其他?

最佳答案

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

例如,典型浏览器的用户代理类似于 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/60.0.3112.113 Safari/537.36(这是我当前在 Chrome 上的用户代理)

Google 机器人的代理是 Googlebot/2.​​1 (+http://www.google.com/bot.html),从 PHP 服务器发送的请求的用户代理为空(默认情况下) )。您可以将所有请求视为机器人,但其中包含“Chrome”、“Mozilla”、“AppleWebKit”、“Safari”等字样的请求除外。

尽管如此,您可能应该只拥有两个单独的页面,一个用于 API,另一个用于用户。这将防止任何并发症和困惑。请记住,也可以更改您的用户代理,因此机器人可以拥有看起来像用户的用户代理,而用户也可以拥有看起来像机器人的用户代理。

关于javascript - 我们可以通过node.js检测请求类型(来自html或用户客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46010184/

相关文章:

javascript - 如何垂直对齐表格单元格中的第一行文本?

javascript - 在 CI 模式下运行时如何测试访问 ember-cli 服务器?

node.js - 在云函数中处理 HTTP 请求时读取 ECONNRESET 错误

node.js - 在单个对象而不是嵌套对象中显示所有数据

javascript - 使用 jQuery 从二维数组创建表

javascript - 使用 Node.js 初始化和配置 AWS

javascript - 为什么我的基本功能(在 NodeJS 中)不起作用?

javascript - 错误: Cannot resolve module 'json-loader' whilst trying to build an app in webpack

javascript - mongolab 请求返回空查找结果

javascript - 在 javascript 中处理 youtube 数据 api 中的错误