web-dev-qa-db-ja.com

Node js - 要求がモバイルまたは非モバイルデバイスから来ているかどうかを識別する

私はまだノードJSで新しいです。クライアント側からの要求を特定する方法についての回避策やメソッドは、ノードJSを使用してモバイルまたは非モバイルデバイスからのものですか?私が今やっていることは、デバイスタイプ(モバイル/デスクトップ)に基づいて特定のAPIのアクセスを制限したいと思います。私はサーバー側を修復しています。ありがとう。

3
H.Mustafa

クライアントがモバイルデバイスを使用しているかどうかを検出するための基本的な方法は、userAgentの特定の文字列のセットを一致させることである。

function detectMob() {
    const toMatch = [
        /Android/i,
        /webOS/i,
        /iPhone/i,
        /iPad/i,
        /iPod/i,
        /BlackBerry/i,
        /Windows Phone/i
    ];

    return toMatch.some((toMatchItem) => {
        return navigator.userAgent.match(toMatchItem);
    });
}
 _

(参照: モバイルブラウザの検出

クライアントのデバイスでコードのこのスニペットを実行します。返された結果がtrueの場合は、それが他のモバイルデバイスでデスクトップ/ラップトップであることを知っています。お役に立てれば。

3
Melvin Abraham

私が提案する方法は、NPMパッケージを使用することです express-useragent それ以来、長期的に信頼性が高い。

var http = require('http')
  , useragent = require('express-useragent');
 
var srv = http.createServer(function (req, res) {
  var source = req.headers['user-agent']
  var ua = useragent.parse(source);
  
  // a Boolean that tells you if the request 
  // is from a mobile device
  var isMobile = ua.isMobile

  // do something more
});
 
srv.listen(3000);
 _

それはまたexpressjsと連携しています:

var express = require('express');
var app = express();
var useragent = require('express-useragent');
 
app.use(useragent.express());
app.get('/', function(req, res){
    res.send(req.useragent.isMobile);
});
app.listen(3000);
 _