wake-up-neo.com

Wie erhalte ich die Domäne, aus der die Anfrage stammt, in express.js?

Ich verwende express.js und ich muss die Domäne kennen, von der der Anruf ausgeht. Dies ist der einfache Code

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

Wie erhalte ich die Domäne aus dem req- oder dem res-Objekt?. Ich meine, ich muss wissen, ob das API von somesite.com oder someothersite.com aufgerufen wurde. Ich habe versucht, eine Konsole.dir von req und res zu machen, aber ich habe keine Ahnung von dort, las auch die Dokumentation, aber sie half mir nicht.

50

Sie müssen es aus dem Host-Header abrufen.

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

Es ist optional mit HTTP 1.0, aber nach 1.1 erforderlich. Und die App kann immer eine eigene Anforderung stellen.


Wenn dies für die Unterstützung von Origin-Anfragen gilt, verwenden Sie stattdessen den Header Origin.

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

Beachten Sie, dass einige Origin-Anfragen eine Validierung durch eine "preflight" - Anforderung erfordern :

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

Wenn Sie nach der IP des Clients suchen, können Sie diese mit folgendem Befehl abrufen:

var userIP = req.socket.remoteAddress;

Wenn sich Ihr Server hinter einem Proxy befindet, erhalten Sie wahrscheinlich die IP des Proxys. Ob Sie die IP des Benutzers erhalten können, hängt davon ab, welche Informationen der Proxy weitergibt. Normalerweise wird es auch in den Kopfzeilen sein.

88

Anstatt:

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

sie können auch verwenden:

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

In Express 4.x sollten Sie req.hostname verwenden, der den Domänennamen ohne Port zurückgibt. d.h.

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

Siehe: http://expressjs.com/de/4x/api.html#req.hostname

1
DiegoRBaquero