Une configuration de résolution d'erreurs d'API avancée vous permet de créer des règles pour la collecte d'informations supplémentaires sur les erreurs d'API (en-têtes, contenu de requête/corps de réponse), ainsi que pour la collecte d'erreurs d'API avec code d'état, pas uniquement dans la fourchette 4XX-5XX, afin que vous puissiez résoudre les erreurs plus rapidement.
Utilisez la résolution avancée d'erreur d'API pour :
- Configurer la collecte d'erreurs d'API pour les requêtes de réseau où le code d'état HTTP est inférieur à 400.
- Voir les types suivants de détails d'erreur d'API supplémentaires dans le flux d'évènements de Session Replay :
- les en-têtes HTTP de la requête et de la réponse
- le corps (les données envoyées par la requête ou reçues dans la réponse)
- les éléments de corps (éléments spécifiques de la requête/du corps de réponse)
- les paramètres de requête du point de terminaison de la demande (de l'URL de l'information que vous demandez).
- Exploiter les éléments de corps de réponse non-cryptés dans les workspaces d'erreur et les alertes, ainsi que dans le Contexte d'analyse pour monitorer, identifier et quantifier les erreurs sur la base du contenu du corps de réponse.
Une fois configurées, apprenez-en plus sur l'utilisation de ces détails de résolution d'erreur d'API.
Protéger les données personnelles
Selon les en-têtes personnalisés que vous ajoutez, il est possible que les détails de résolution contiennent des données personnelles. Afin de protéger les données d'être décryptées facilement par n'importe qui, vous pouvez, et devriez, crypter les en-têtes personnalisés qui contiennent des données personnelles.
Les en-têtes et les éléments de corps peuvent être collectés sans cryptage pour faciliter et accélérer l'exposition des détails de résolution. Cette option ne doit cependant être utilisée que si vous êtes certain que le point de données collecté que vous ajoutez ne contient pas de données personnelles.
Les requêtes entières et/ou les corps de réponses, ainsi que les paramètres de requête, ne peuvent être collectés qu'en étant cryptés.
De plus, nous ne vous donnons pas la possibilité de collecter des en-têtes spécifiques contenant des données personnelles : cookies, en-têtes d'autorisation et de proxy-autorisation, car ils contiennent des données sensibles que nous ne pouvons pas traiter.
Consultez notre article sur la confidentialité et les données personnelles pour plus d'informations.
Crypter les détails de résolution
Condition préalable à la configuration du cryptage : Une paire de clés publique/privée doit être configurée au préalable, avant que vous ne puissiez ajouter et exposer les détails de résolutions d'erreurs d'API pour les en-têtes personnalisés.
Pour plus de détails sur la configuration des clés de cryptage, consultez cet article.
Limite
Sur le web, notre mécanisme de cryptage repose sur deux API de navigateurs qui sont supportées par la majorité des navigateurs grand public (l'API CryptoKey et l'API Web Cryptography). Toutefois, certains navigateurs et certaines anciennes versions de navigateurs ne les prennent pas en charge. Dans ce cas, le tag ne traitera pas la collecte des données cryptées.
Aperçu de l'onglet de résolution des erreurs d'API
1. Rendez-vous dans la Console en cliquant sur l'icône de votre profil, puis sur "Console".
2. Cliquez sur l'onglet "Résolution des erreurs avancées".
Aperçu des règles de collecte des erreurs d'API
Pour chaque règle listée, vous retrouverez les informations suivantes (de gauche à droite) :
- le nom de la règle
- le/les code(s) d'état de la règle
- l'URL de la requête
- la date à laquelle la règle a été créée et la date de dernière mise à jour (accompagnée du nom du créateur)
Pour vous aider à déterminer s'il vous faut mieux créer une nouvelle règle ou modifier une règle existante, référez-vous aux actions ci-dessous :
- Rechercher la règle : Recherchez des règles existantes grâce aux termes contenues dans leur nom ou aux codes d'état du domaine.
- Trier les règles : Cliquez sur les titres des colonnes pour triez les règles listées par nom, code d'état, domaine ou date (de création ou de dernière mise à jour, au choix).
- Visualiser les détails de la règle : Cliquez sur l'icône "oeil" à droite d'une règle pour ouvrir le panneau latéral la concernant et voir les conditions de collecte et les points de données déjà collectés.
La règle "par défaut"
Cette règle représente le comportement de collecte par défaut de toutes les demandes de réseau ayant un code d'état compris entre 4XX et 500, avec uniquement les points de données par défaut : URL de la requête, code d'état et méthode. Elle ne peut être ni modifiée, ni supprimée.
Créer une nouvelle règle
Étape 1 : Nommer et ajouter les conditions de la règle
1. Cliquez sur le bouton "+ Nouvelle règle".
2. Nom de la règle : Donnez un nom à votre règle dans le champ dédié à cet effet. Ce nom doit être unique.
3. URL de la requête : La règle correspondra à toutes les demandes dans lesquelles l'URL contiendra la valeur que vous aurez saisi dans ce champ. Notez qu'il n'est pas possible d'utiliser exactement les même conditions de collecte qu'une règle déjà existante.
Exemple (si vous voulez faire correspondre l'URL de la requête) : https://subdomain.domain.com/path/sub-path?query=param
Les valeurs suivantes lui correspondront :
- URL complète : https://subdomain.domain.com/path/sub-path?query=param
- Domaine et protocole HTTP : https://subdomain.domain.com
- Domaine uniquement : domain.com
- Chemin uniquement : /path/sub-path
- Domaine + chemin : subdomain.domain.com/path/sub-path
4. Code d'état : Vous pouvez soit sélectionnez le groupe de 4XX-5XX pour faire correspondre tous les codes d'état couvrant des erreurs, ou vous pouvez définir un code d'état spécifique.
5. Contenu du corps de réponse : Dans le champs "Contenu du corps", spécifiez ce qui doit être écrit dans le corps de la réponse de la règle à collecter. Vous pouvez saisir jusqu'à 64 caractères. Ce champ est facultatif pour tous les codes d'état à l'exception du code "200". Celui-ci nécessite que l'on spécifie le contenu du corps de la réponse, idéalement en identifiant une erreur. Cela permet d'éviter de collecter toutes les requêtes réseaux comme erreurs d'API.
Logique et limite des contenus de corps de réponse
Il s'agit là d'une logique de filtrage qui se base sur l'opérateur "contient". Un text exact n'est donc pas une nécessité. Les contenus de corps de réponses ne sont pas sensibles au caractère prêt (c'est-à-dire que "invalide" correspondra par exemple à une valeur comme "CODE_INVALIDE").
Exemple:
Vous voulez collecter la requête lorsque sa réponse contient une erreur.
Exemple de corps de réponse :
{ "errors": [ { "message": "Cannot query field 'age' on type 'Customer'.", "code": "1003" } ], "data": { "customer": { "id": "123", "name": "John Doe" } } }
Valeur de contenu de corps à utiliser : errors
Valeur de contenu de corps à utiliser (avec caractères spéciaux) : errors\"\:\[\{
Limite des contenus de corps de réponses :
- Sur les applications Android Mobile, la correspondance du contenu du corps fonctionnera si le corps de la réponse a une taille maximale de 1 Mo.
- Sur les applications iOS Mobile, il n'y a aucune limite de taille de contenu de corps de réponse.
- Sur le web, il n'y a aucune limite de taille de contenu de corps de réponse.
6. Cliquez sur "Suivant" pour poursuivre la création de votre règle.
Étape 2 : Ajouter les points de données à collecter
Une fois le nom, les conditions et l'URL de requête de votre règle saisis (et le contenu de corps si le code d'état est 200), vous pourrez ajouter les points de données collectés. Par défaut, Contentsquare collecte l'URL de requête, le code d'état et la méthode.
En-têtes
1. Cliquez sur "+ Ajouter". Notez que vous pouvez ajouter plusieurs en-têtes d'un coup en cliquant sur le bouton "+". Cela peut s'avérer très utile s'ils partagent tous les mêmes conditions (requête ou réponse, crypté on non).
2. Saisissez le nom de l'en-tête.
3. Cryptage :
- Si le cryptage est configuré, l'état par défaut sera "crypté". Désactivez le cryptage pour collecter un en-tête non-crypté.
- Si le cryptage n'est pas configuré, l'en-tête ne pourra être collecté que de manière non-cryptée. Assurez-vous de ne pas collecter d'en-tête contenant des informations personnelles.
4. Par défaut "Requête" est sélectionnée. Vous pouvez néanmoins modifier cela pour collecter les réponses à la place.
5. Cliquez sur "Appliquer".
Éléments de corps
Obtenez plus de flexibilité dans les points de données que vous souhaitez exploiter, en collectant des éléments spécifiques de la demande ou du corps de la réponse au format JSON à l'aide du language d'interrogation basé sur les chemins JSON.
Note : Vous ne pouvez pas modifier d'éléments de corps, mais vous pouvez en supprimer et recréer.
La longueur du chemin JSON est limité à 60 caractères.
Éléments de corps de réponses pour l'analyse
Utilisés pour le regroupement et le filtrage des erreurs (dans le Contexte d'analyse), ainsi que pour la création de widgets de workspace et d'alertes, voici les éléments du corps de réponses qui seront collectés non-cryptés.
Pour définir un élément de corps de réponses à collecter pour l'analyse :
1. Cliquez sur "+ Ajouter".
2. Saisissez le chemin JSON de l'élément que vous souhaitez collecter. Vous pouvez aussi ajouter d'autres éléments en même temps en cliquant sur le bouton "+".
3. Cliquez sur "Appliquer".
Éléments de corps de réponses pour la résolution d'erreur
Visibles au niveau de l'évènement individuel dans Session Replay, voici les élément du corps de requête/réponse que vous devez collecter pour résoudre les erreurs.
Pour définir un élément de corps de réponses à collecter pour la résolution d'erreur :
1. Cliquez sur "+ Ajouter".
2. Saisissez le chemin JSON de l'élément que vous souhaitez collecter. Vous pouvez aussi ajouter d'autres éléments en même temps en cliquant sur le bouton "+".
3. Cryptage :
- Si le cryptage est configuré, l'état par défaut sera "crypté". Désactivez le cryptage pour collecter un élément de corps non-crypté.
- Pour la réponse : l'élément de corps pour la résolution d'erreur ne peut être collecté qu'avec un cryptage, dans la mesure où les éléments de corps de réponses non-cryptés sont ajoutés pour l'analyse (dans la section précédente).
- Si le cryptage n'est pas configuré, seuls les éléments de corps de requête peuvent être collectés sans cryptage. Assurez-vous néanmoins de ne pas collecter d'éléments de corps contenant des informations personnelles.
4. Par défaut "Réponse" est sélectionné. Vous pouvez modifier ce paramètre pour collecter les éléments de corps de réponses ou de requêtes.
5. Cliquez sur "Appliquer".
Types de corps pris en charge
La collecte des éléments de corps est disponible pour les corps de requête/réponse sous les conditions suivantes :
Web | Applications mobile |
L'en-tête ‘content-type’ doit être configuré sur ‘application/json’ ou ‘application/graphql’ | Le format du corps doit être de type JSON |
La taille doit être inférieure à 64 000 bytes | La taille doit être inférieure à 64 000 bytes |
Exemples d'éléments de corps :
“errors[0].message” pour collecter le message d'erreur sans cryptage
“errors[0].code” pour collecter le code de l'erreur sans cryptage
“data.emailAddress” pour collecter l'adresse e-mail de façon cryptée car il s'agit là de données personnelles
Corps entier (cryptés)
Cochez la case pour collecter soit les corps de requêtes, soit les corps de réponses, soit les deux. Essayez d'éviter d'inclure des points de terminaison et des champs contenant des données sensibles qui ne peuvent pas être affichées ou suivies, car ces informations ne sont pas autorisées.
Types de corps pris en charge et limites
Web |
Applications mobile |
application/json |
Le SDK tentera d'analyser le corps comme une chaîne de caractères, quel que soit le format.
|
Limites de la collecte de corps entier :
Le corps de requête sera collecté si sa taille ne dépasse pas 64 KB.
Le corps de réponse sera collecté si sa taille ne dépasse pas 5 KB.
Paramètres de requête (cryptés)
Cochez la case pour collecter les paramètres de requête. Ceux-ci seront collectés si leur taille ne dépasse pas 2 KB.
Points de données par défaut
Par défaut, nous collectons l'URL de la demande, le code d'état et la méthode.
Modifier et supprimer des règles
Depuis la liste des règles, cliquez sur l'icône "oeil" à droite d'une règle pour ouvrir le panneau latéral la concernant.
Pour modifier :
1. Cliquez sur l'icône stylo du nom de la règle ou sur la section "Conditions".
2. Ouvrez la modale de la règle à l'étape 1.
3. Cliquez sur l'icône "stylo" de la section des points de données collectés pour ouvrir la modale des règles à l'étape 2.
4. Appliquez les changements.
5. Au besoin, passez à l'autre modale pour apporter des modifications supplémentaires.
6. Cliquez sur "Enregistrer" pour appliquer les changements.
Pour supprimer :
1. Cliquez sur le bouton "Supprimer la règle" en bas.
2. Confirmez l'action de suppression en cliquant sur "Supprimer" une nouvelle fois.
FAQ
Puis-je suivre les détails de résolution d'une erreur de manière rétroactive ?
Non, les détails de résolution des erreurs ne sont collectés qu'après définition de la configuration.
Que ce passe-t-il lorsqu'une demande dépasse les limites acceptées ?
Trois points de données sont concernés par les limites suivantes :
- Limite des paramètres de la requête : 2 KB
- Taille maximale du corps de la requête : 64 KB
- Taille maximale du corps de la réponse : 5 KB
Chacun de ces points de données est évalué indépendamment des autres. Lorsqu'une limite est atteinte, les données ne sont plus collectées. Pour chacune d'entre elles, nous enverrons "..." non crypté. Ceci sera également visible dans les détails de résolution des problèmes du replay.
Pourquoi les corps de requêtes et/ou de réponses ont-ils l'air d'être cryptés, même après décryptage ?
Cela peut se produire si la requête a un en-tête Transfer-Encoding
configuré sur la value gzip
. Chrome DevTools décompresse automatiquement le corps, de sorte que ce ne soit pas perceptible lors de son utilisation. En revanche, dans la fenêtre modale de dépannage du lecteur, le corps n'est pas décompressé automatiquement. Des outils tiers peuvent être utilisés pour le décompresser après le décryptage.