Ich verwende einen Node-Express-Server mit Axios und fordere die API-Aufrufe für mein Back-End an, um die Anfragen weiterzuleiten, aber ich möchte die Benutzerdetails statt der Server senden.
Zum Beispiel:
Meine Website -> Benutzer klickt auf das Bild -> get wird von meinem Server A aufgerufen -> Server ruft einen anderen Server B auf, um Daten abzurufen.
Jetzt sieht der B-Server die Informationen des A-Servers, wie IP, Geo, ISP usw. Wie leite ich solche Benutzerdaten an den A-Server weiter, damit der B-Server denkt, der Benutzer hätte diesen Server direkt von der Website aus aufgerufen?
Antwort1
Der erste Schlüssel besteht darin, zu verstehen, dass viele der von Ihnen in Bezug auf „Geo“ und „ISP“ genannten Informationen alle von der IP-Adresse selbst abgeleitet sind. Sie möchten diese also weiterleiten.
Sie haben nicht viele Informationen zu Ihrem Setup angegeben, ich habe jedoch zwei mögliche Setups angegeben.
1. Reverse-Proxy
Server A ist ein Reverse-Proxy, der alle Anfragen an Server B weiterleitet nginx
. In diesem Fall würden wir verwenden, Forwarded header
was sehr gut beschrieben ist.Hier.
Beispiel-Codeausschnitt:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://server_b;
}
2. Anwendungsschicht Server A hostet eine Website (oder eine andere Anwendung), die im Backend eine Anfrage an Server B sendet.
In diesem Fall würde ich Ihnen – ohne die genaue Funktionsweise der Anwendung zu kennen – vorschlagen, die IP-Adresse des Besuchers irgendwie in die Anforderungsnutzlast einzubeziehen.
Einfaches Beispiel, wenn Sie PHP auf Server A verwenden (und dieses Formular an Server A übermittelt wurde, bevor es an Server B weitergeleitet wurde):
<input type="hidden" id="visitorIP" name="visitorIP" value="<?php $_SERVER['REMOTE_ADDR']?>">