web-dev-qa-db-de.com

Was ist der X-REQUEST-ID http-Header?

Ich habe bereits viel über dieses Thema gegoogelt, verschiedene Artikel über diesen Header, seine Verwendung auf Heroku oder Projekte auf Django-Basis gelesen.

Es ist jedoch immer noch alles in meinem Kopf verwirrt.

  • Was ist der Zweck dieses Headers?
  • Verstößt es gegen die Privatsphäre der Nutzer?
  • Kann es helfen, einen Benutzer zu finden?
62
Stephan

Wenn Sie einen Webservice betreiben, auf den Clients zugreifen, ist es möglicherweise schwierig, Anforderungen (die ein Client sehen kann) mit Serverprotokollen zu korrelieren (die der Server sehen kann).

Die Idee von X-Request-ID ist, dass ein Client eine zufällige ID erstellen und an den Server übergeben kann. Der Server fügt diese ID dann in jede von ihm erstellte Protokollanweisung ein. Wenn ein Client einen Fehler erhält, kann er die ID in einen Fehlerbericht aufnehmen, sodass der Server-Operator die entsprechenden Protokollanweisungen nachschlagen kann (ohne sich auf Zeitstempel, IPs usw. zu verlassen).

Da diese ID (zufällig) vom Kunden generiert wird, enthält sie keine vertraulichen Informationen und sollte daher nicht die Privatsphäre des Benutzers verletzen. Da pro Anfrage eine eindeutige ID erstellt wird, hilft dies auch nicht bei der Nachverfolgung von Benutzern.

105
Stefan Kögl

Zweck: Idempotenz

Mit einer ID, die sich für jede Anforderung ändert, jedoch bei einer erneuten Anforderung einer Anforderung gleich bleibt, kann der Empfänger sicherstellen, dass die Anforderung nicht mehr als einmal verarbeitet wird.

Dies ist ein Angebot eines API-Anbieters:

Alle POST-, PUT- und PATCH-HTTP-Anforderungen sollten ein eindeutiges .__ enthalten. X-Request-Id-Header, der verwendet wird, um eine idempotente Nachricht sicherzustellen Verarbeitung im Falle eines erneuten Versuchs

Wenn Sie zu einer zufälligen Zeichenfolge machen, die für jede Anforderung eindeutig ist,, wird dadurch weder Ihre Privatsphäre verletzt noch das Tracking aktiviert.

Wenn Sie mehr darüber wissen möchten, was Idempotenz zu bieten hat, lesen Sie diesen aufschlussreichen Artikel .

1

Erklärung anhand einer Geschichte/Analogie

Dein Internet spielt (wie immer), also rufst du Tellstra an und wartest für immer am Telefon. Endlich gibst du auf und knallst das Telefon frustriert runter. (Dies ist ein fehlgeschlagener Anruf. Eine Aufzeichnung davon finden Sie in den Anrufprotokollen von Tellstra.)

"Das war's, ich rufe den Bürgerbeauftragten an!"

Aber der Obmudsman muss Tausende von Anruflisten durchgehen (alle fehlgeschlagenen Abfragen von Tellstra). Wenn Sie ihnen mitteilen, dass Sie Telstra angerufen haben und Ihr Anruf erfolglos war, reicht das nicht aus: Wie wird der Bürgerbeauftragte aus allen Anruflisten von Tellstra wissen, welcher von Ihnen war - damit es kann weiter untersucht werden?

Hier kommt die X-Request-ID ins Spiel - wenn Sie Tellstra anrufen, geben Sie eine Zufallszahl (die X-Request-ID) weiter und diese wird in den Tellstra-Datensätzen protokolliert. Auf diese Weise kann der Ombudsmann (der Zugriff auf alle Aufzeichnungen hat) Ihren eingehenden Anruf finden, um herauszufinden, was schief gelaufen ist.

Anwendung der Geschichte auf HTTP

Das Gleiche gilt für http-Anfragen - eine ID, mit der Sie (als Back-End-Entwickler) herausfinden können, was schief gelaufen ist, wenn ein Client einen Fehler oder einen umfangreichen Bericht ausgegeben hat.

Das ist die grundlegende Zusammenfassung. Bei Fragen etc. einfach einen Kommentar posten und ich hoffe, es zu klären.

1
BKSpurgeon