2016-07-10 11 views
0

Ich versuche, eine API zu erstellen, die verschiedene Dinge für verschiedene IP-Adressen zurückgibt. Zum Beispiel wird eine bestimmte Domain, die zu meinem Server weiterleitet (zB google.com) eine Sache angezeigt, und eine andere Domain (zB Amazon.com) würde etwas anderes zeigen.Express/Node Requester ip

Ich habe versucht, Middleware, die auf req.ip aussieht, aber es scheint wie req.ip immer ":: ffff: 127.0.0.1" von jeder Anfrage zurückgibt. Zusätzlich möchte ich die Verbindungen über den letzten Sprung zu meinem Server einschränken - d. H. Verschiedene Inhalte basierend auf website.com zeigen, wobei: Client-Browser -> website.com -> mein Server.

Wie würde ich mich über

EDIT dies mit Express.js tun: Ich glaube, die Leute meine Frage sind Missverständnis: Ich möchte nicht von der Client-IP meine Ergebnisse filtern. Ich möchte die Ergebnisse nach dem letzten Bounce auf meinen Server filtern. I.e. Wenn ein Client eine Verbindung zu redirect.com herstellt und Weiterleitungen an meinen Server weiterleitet, möchte ich die IP von redirect.com erkennen und darauf basierend filtern. Sagen wir, es gibt eine andere Seite namens fam.com, die auch an meinen Server weiterleitet. Ich möchte fam.com andere Dinge zeigen als redirect.com.

+0

Haben Sie irgendeine Art von Proxy verwenden? Wenn ja, müssen Sie Ihren Proxy zu Forward-IP konfigurieren –

+0

würde req.ip in Express dann die ursprüngliche Adresse der Anfrage oder die nächste Bounce zurückgeben? – intrinsiciwnl

+0

Bitte überprüfen Sie, ob die 'refferer'-Kopfzeile gesetzt ist, wenn Sie einen Proxy verwenden. Versuchen Sie andernfalls, die IP als Variable vom Client zu senden. –

Antwort

0

Das funktionierte für mich.

var ip = req.headers['x-forwarded-for'] || 
    req.connection.remoteAddress || 
    req.socket.remoteAddress || 
    req.connection.socket.remoteAddress; 

if (ip && ip.startsWith("::ffff:")) { 
    ip = ip.replace("::ffff:", "") 
} 
+0

Scheint wie eine Variante dieser Lösung für jetzt funktioniert. Mit app.set ('trust proxy') und dem letzten Wert von req.ips wird der letzte Proxy-Bounce von der Anfrage zurückgegeben. Sieht so aus, als ob der X-forwarded-for-Header gefälscht werden könnte ... hoffentlich kann ich etwas anderes herausfinden, um Leute zu finden, die versuchen, den Header zu fälschen. – intrinsiciwnl