Anleitungen

Serverseitige Geolokalisierung in eine Node- oder PHP-App einbauen

Für die meisten Anwendungsfälle, darunter Personalisierung, Standardwerte und Analysen, gehört die Geolokalisierung auf den Server, denn sie erfordert weder die Mitwirkung des Browsers des Besuchers noch überhaupt ein clientseitig laufendes Skript.

Die Anfrage selbst

Unabhängig von der Sprache ist der Aufruf immer dieselbe einfache HTTP-GET-Anfrage an /v1/ip, wobei der Schlüssel als Header gesendet wird.

GET /v1/ip?ip=203.0.113.60
X-API-Key: mg_live_examplekey123
{
  "status": "ok",
  "ip": "203.0.113.60",
  "version": 4,
  "found": true,
  "country": "Netherlands",
  "country_code": "NL",
  "region": "North Holland",
  "city": "Amsterdam",
  "postcode": "1012",
  "lat": 52.3702,
  "lon": 4.8952,
  "timezone": "Europe/Amsterdam",
  "asn": 3344,
  "org": "Example ISP"
}

In einer PHP-App

Ermitteln Sie die eigene Adresse des Besuchers aus der Anfrage, typischerweise $_SERVER['REMOTE_ADDR'], und übergeben Sie sie als Parameter ip. Führen Sie dann die HTTP-Anfrage mit dem HTTP-Client aus, den Ihre PHP-Umgebung ohnehin verwendet, curl oder eine Bibliothek, die darauf aufsetzt. Da diese Website selbst als serverseitig gerendertes PHP ohne clientseitiges JavaScript gebaut ist, fügt sich dieses Muster ganz natürlich in den normalen Rendering-Ablauf einer Seite ein, wobei die Standortdaten verfügbar sind, bevor das Markup der Seite erzeugt wird.

In einer Node-App

Lesen Sie die Adresse des Besuchers aus dem eingehenden Request-Objekt, üblicherweise req.socket.remoteAddress oder ein von einem Reverse Proxy gesetzter Header wie X-Forwarded-For, falls ein solcher vor Ihrer App sitzt, und führen Sie dieselbe GET-Anfrage mit dem HTTP-Client Ihrer Wahl aus, bevor Sie eine Antwort rendern.

Umgang mit einem Proxy vor Ihrer App

Wenn Ihre App hinter einem Load Balancer oder Reverse Proxy läuft, ist die Adresse, die Ihr Code direkt sieht, möglicherweise die Adresse des Proxys selbst und nicht die des Besuchers. Prüfen Sie den Header mit der weitergeleiteten Adresse, den Ihr Proxy setzt, und übergeben Sie diese Adresse ausdrücklich als Parameter ip, statt sich auf die rohe Remote-Adresse der Verbindung zu verlassen, mit der Sie sonst Ihre eigene Infrastruktur statt des Besuchers geolokalisieren würden.

Kosten der Anfrage in beiden Fällen

Die Abfrage selbst kostet dieselbe eine Anfrage, ob sie aus PHP, aus Node oder aus einer anderen Backend-Sprache aufgerufen wird, denn die Kosten hängen an der Anfrage, die die API erreicht, nicht daran, was den Aufruf ausgelöst hat. Speichern Sie das Ergebnis in beiden Sprachen für die Dauer einer Sitzung zwischen, damit die Abfrage nicht auf jeder Seite wiederholt wird.

Serverseitige Geolokalisierung funktioniert unabhängig von der Backend-Sprache auf dieselbe Weise: ein HTTP-Aufruf mit der Adresse des Besuchers. Alle Authentifizierungsoptionen finden Sie in der Dokumentation zur Authentifizierung, die Feldliste in der Dokumentation zur IPv4-Abfrage.