Ich verwende express.js und muss die Domain kennen, von der der Anruf stammt. Dies ist der einfache Code
app.get(
'/verify_license_key.json',
function( req, res ) {
// do something
Wie erhalte ich die Domain vom req
oder vom res
Objekt? Ich meine, ich muss wissen, ob die API von somesite.com oder someothersite.com aufgerufen wurde. Ich versuchte , ein console.dir sowohl tun req
und , res
aber ich habe keine Ahnung , von dort auch die Dokumentation lesen , aber es gab mir keine Hilfe.
javascript
node.js
express
Nicola Peluchetti
quelle
quelle
req.host
oderreq.get('host')
drückt docsreq.headers["x-forwarded-for"] || req.connection.remoteAddress
x-forwarded-for würde Ihre Basen hinter einem Proxy, Load Balancer abdecken ...Antworten:
Sie müssen es aus dem
HOST
Header abrufen .var host = req.get('host');
Es ist optional mit HTTP 1.0, wird jedoch von 1.1 benötigt. Und die App kann immer eine eigene Anforderung stellen.
Wenn dies zur Unterstützung von Cross-Origin-Anforderungen dient , verwenden Sie stattdessen den
Origin
Header.var origin = req.get('origin');
Beachten Sie, dass einige Ursprungsanfragen 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 abrufen mit:
var userIP = req.socket.remoteAddress;
message.socket
.socket.remoteAddress
Beachten Sie, dass Sie wahrscheinlich die IP-Adresse des Proxys erhalten, wenn sich Ihr Server hinter einem Proxy befindet. Ob Sie die IP des Benutzers erhalten können, hängt davon ab, welche Informationen der Proxy weitergibt. Aber es wird normalerweise auch in den Headern sein.
quelle
'user-agent': 'WordPress/3.6; http://localhost/wordpress_clean'
Soll ich das analysieren?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;
quelle
undefined
In Express 4.x können Sie
req.hostname
ohne Port den Domänennamen zurückgeben. dh:// Host: "example.com:3000" req.hostname // => "example.com"
Siehe: http://expressjs.com/de/4x/api.html#req.hostname
quelle
Vor kurzem gab es ein Problem beim Abrufen des 'Origin'-Anforderungsheaders. Dann fand ich diese Frage. Aber ziemlich verwirrt mit den Ergebnissen,
req.get('host')
ist veraltet, deshalb gebenUndefined
. Verwenden,req.header('Origin'); req.header('Host'); // this method can be used to access other request headers like, 'Referer', 'User-Agent' etc.
quelle