我正在构建一个文件路径,由于客户不同,我想要采取不同的行动,这就是我的计划
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文件?
答案 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,一个用于用户。这样可以防止任何并发症和混乱。请记住,也可以更改您的用户代理,因此机器人可以拥有一个看起来像用户的用户代理,而用户可以拥有一个看起来像机器人的用户代理。