检查 HTTP 请求是否来自 phone 或 PC

Check if an HTTP request came from a phone or a PC

我想检查 HTTP 请求是来自 phone 还是电脑,以便我知道要发回什么 HTML 文件。我怎么做? 我正在使用快递。这是我的 nodeJS 服务器代码:

var express = require("express"); 
var fs = require("fs"); 

var server = express(); 

server.use("/Static", express.static('./Static/'));

server.get("/", (req, res) => {
    res.send(fs.readFileSync("./main.html", "utf8")); 
}); 

server.listen(8001);

我发现这个模块有点用完了。 PFB示例代码。

var express = require('express');
var app = express();
var device = require('express-device');
app.use(device.capture());

app.get('/hello',function(req,res) {
    console.log(req.device);
    res.send("Hi to "+req.device.type.toUpperCase()+" User");
});

app.listen(3000);
console.log("Listening to Port 3000");

你可以通过阅读User Agent请求headers来查看,如下

function testDevice(req, res) {
  console.log(req.headers)

  if (req.header('user-agent').indexOf('Mobile') != -1) {
      console.log('You are using mobile device');
    } else {
      console.log('this is probably a computer');
    }
}

您将从 PC 和移动设备获得不同的 User Agent header 值。

  1. 对于 PC,你会得到这样的东西:
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
  1. 对于移动设备,您将获得如下信息:
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',