I want to check if an HTTP request came from a phone or a pc so that I know what HTML file to send back. How do I do that? I am using express. Here is my code for my nodeJS server:
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);
You can check it by reading User Agent request headers, like following
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');
}
}
You will get different values for User Agent header from PC and Mobile.
'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',
'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',