web-dev-qa-db-fra.com

Comment puis-je obtenir le domaine à l'origine de la requête dans express.js?

J'utilise express.js et j'ai besoin de connaître le domaine à l'origine de l'appel. C'est le code simple

app.get(
    '/verify_license_key.json',
    function( req, res ) {
        // do something

Comment puis-je obtenir le domaine à partir de l'objet req ou res? J'ai essayé de faire un fichier console.dir de req et res mais je n'en ai aucune idée, lisez également la documentation mais cela ne m'a pas aidé.

50
Nicola Peluchetti

Vous devez le récupérer à partir du Host header .

var Host = req.get('Host');

Il est facultatif avec HTTP 1.0, mais requis par 1.1. Et, l'application peut toujours imposer une exigence qui lui est propre.


S'il s'agit de la prise en charge de demandes croisées , vous utiliserez plutôt l'en-tête Origin.

var Origin = req.get('Origin');

Notez que certaines demandes croisées doivent être validées via une requête "preflight" :

req.options('/route', function (req, res) {
    var Origin = req.get('Origin');
    // ...
});

Si vous recherchez l'adresse IP du client, vous pouvez la récupérer avec:

var userIP = req.socket.remoteAddress;

Notez que si votre serveur est derrière un proxy, cela vous donnera probablement l'adresse IP du proxy. Que vous puissiez ou non obtenir l'adresse IP de l'utilisateur dépend des informations transmises par le proxy. Mais, ce sera généralement aussi dans les en-têtes.

88
Jonathan Lonowski

Au lieu de:

var Host = req.get('Host');
var Origin = req.get('Origin');

vous pouvez aussi utiliser:

var Host = req.headers.Host;
var Origin = req.headers.Origin;
16
Michiel

Dans Express 4.x, vous devriez utiliser req.hostname, qui renvoie le nom de domaine, sans port. c'est à dire.:

// Host: "example.com:3000"
req.hostname
// => "example.com"

Voir: http://expressjs.com/fr/4x/api.html#req.hostname

1
DiegoRBaquero