web-dev-qa-db-fra.com

Qu'est-ce que l'en-tête http X-REQUEST-ID?

J'ai déjà beaucoup consulté ce sujet sur Google, j'ai lu divers articles sur cet en-tête, son utilisation sur Heroku ou des projets basés sur Django.

Cependant, tout est encore confus dans ma tête.

  • Quel est le but de cet en-tête?
  • Est-ce que cela viole la vie privée de l'utilisateur?
  • Peut-il aider à suivre un utilisateur?
62
Stephan

Lorsque vous exploitez un service Web auquel accèdent des clients, il peut s'avérer difficile de corréler les demandes (qu'un client peut voir) avec les journaux du serveur (que le serveur peut voir).

L’idée du X-Request-ID est qu’un client peut créer un identifiant aléatoire et le transmettre au serveur. Le serveur inclut ensuite cet ID dans chaque instruction de journal créée. Si un client reçoit une erreur, il peut inclure l'ID dans un rapport de bogue, permettant ainsi à l'opérateur du serveur de rechercher les instructions de journal correspondantes (sans avoir à recourir à des horodatages, des adresses IP, etc.).

Comme cet identifiant est généré (aléatoirement) par le client, il ne contient aucune information sensible et ne doit donc pas porter atteinte à la vie privée de l'utilisateur. Dans la mesure où un identifiant unique est créé à la demande, il n’aide pas non plus le suivi des utilisateurs.

105
Stefan Kögl

But: Idempotency

Avec un ID qui change pour chaque demande, mais reste identique en cas de nouvelle tentative, le destinataire peut s'assurer que la demande ne sera pas traitée plus d'une fois.

Voici une citation d'un fournisseur d'API:

Toutes les requêtes HTTP POST, PUT et PATCH doivent contenir un unique En-tête X-Request-Id utilisé pour assurer le message idempotent traitement en cas de nouvelle tentative

Si vous en faites une chaîne aléatoire, unique par demande, cela ne portera pas atteinte à votre vie privée, ni ne permettra le suivi.

Si vous voulez en savoir plus sur ce que idempotency a à offrir, lisez cet article perspicace .

1
Eugene Beresovsky

Explication utilisant une histoire/analogie

Votre internet est en train de jouer (comme d'habitude), alors vous appelez Tellstra et vous attendez au téléphone pour toujours …… vous abandonnez enfin et décrochez le téléphone de frustration. (Il s'agit d'un appel ayant échoué. Et il existe un enregistrement de celui-ci dans les journaux d'appels de Tellstra.)

"C'est ça, j'appelle l'Ombudsman!"

Mais l’Ombudsman a des milliers d’enregistrements d’appels à traiter (toutes les requêtes infructueuses de Tellstra). Si vous leur dites que vous avez appelé Telstra et que votre appel a échoué, cela ne suffira pas: Comment le médiateur saura-t-il, parmi tous les enregistrements d'appels de Tellstra, lequel était le vôtre - peut être approfondi ??

C'est là qu'intervient l'ID de X-Request-ID: lorsque vous appelez Tellstra, vous transmettez un numéro aléatoire (l'ID de X-Request-ID), qui est enregistré dans les enregistrements Tellstra. De cette façon, l'ombudsman (ayant accès à tous les dossiers) sera en mesure de trouver votre appel entrant pour savoir ce qui s'est mal passé.

Application de l'histoire à HTTP

La même chose s’applique aux requêtes http: c’est un identifiant utilisé pour vous aider (en tant que développeur back-end) à découvrir ce qui ne va pas quand un client vous envoie une erreur ou un gros rapport.

C'est le résumé de base de celui-ci. Toutes les questions, etc. postez juste un commentaire et j'espère éclaircir.

1
BKSpurgeon