2.3. Proxy Error Types & 2.4. Defining New Types (Types d'erreur de proxy et définition de nouveaux types)
2.3. Proxy Error Types (Types d'erreur de proxy)
Cette section énumère les types d'erreur de proxy définis dans ce document. Les entrées individuelles de cette liste peuvent avoir les champs suivants:
- Nom: Le nom enregistré du type d'erreur
- Description: Une définition du type d'erreur
- Paramètres supplémentaires: Zéro ou plusieurs paramètres supplémentaires pouvant être utilisés avec le type d'erreur
- Code d'état HTTP recommandé: Le code d'état HTTP le plus approprié pour cette erreur
- Réponse générée uniquement par des intermédiaires: Indique si cette erreur peut uniquement apparaître dans les réponses générées par l'intermédiaire (true), ou peut apparaître dans les réponses en cours de transmission (false)
- Référence: Ce document
2.3.1. DNS Timeout (Délai d'expiration DNS)
Nom: dns_timeout
Description: L'intermédiaire a rencontré un délai d'expiration lors de la tentative de recherche de l'adresse IP du nom d'hôte du prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 504
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.2. DNS Error (Erreur DNS)
Nom: dns_error
Description: L'intermédiaire a rencontré une erreur DNS lors de la tentative de recherche de l'adresse IP du nom d'hôte du prochain saut.
Paramètres supplémentaires:
rcode: Une chaîne (String) transmettant le RCODE DNS indiquant le type d'erreur. Voir [RFC8499] Section 3.info-code: Un entier (Integer) transmettant le code d'erreur DNS étendu [RFC8914] indiquant le type d'erreur.ttl: Un entier (Integer) indiquant le TTL DNS utilisé par la résolution, en secondes.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.3. Destination Not Found (Destination non trouvée)
Nom: destination_not_found
Description: L'intermédiaire ne peut pas déterminer le prochain saut approprié à utiliser pour cette requête; par exemple, il peut ne pas être configuré. Notez que cette erreur est spécifique aux passerelles, qui nécessitent généralement une configuration spécifique pour identifier les serveurs "backend"; les proxies directs utilisent in-flight_request_error lorsqu'ils ne peuvent pas localiser le prochain saut avec les informations de la requête.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 500
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.4. Destination Unavailable (Destination indisponible)
Nom: destination_unavailable
Description: L'intermédiaire considère que le prochain saut n'est pas disponible; par exemple, les tentatives récentes de communication avec lui peuvent avoir échoué, ou un contrôle de santé peut indiquer qu'il est en panne.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 503
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.5. Destination IP Prohibited (IP de destination interdite)
Nom: destination_ip_prohibited
Description: L'intermédiaire est configuré pour interdire les connexions à l'adresse IP du prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.6. Destination IP Unroutable (IP de destination non routable)
Nom: destination_ip_unroutable
Description: L'intermédiaire ne peut pas trouver de route vers l'adresse IP du prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.7. Connection Refused (Connexion refusée)
Nom: connection_refused
Description: La connexion de l'intermédiaire au prochain saut a été refusée.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.8. Connection Terminated (Connexion terminée)
Nom: connection_terminated
Description: La connexion de l'intermédiaire au prochain saut a été fermée avant de recevoir une partie de la réponse.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.9. Connection Timeout (Délai de connexion expiré)
Nom: connection_timeout
Description: La tentative de l'intermédiaire d'ouvrir une connexion au prochain saut a expiré.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 504
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.10. Connection Read Timeout (Délai de lecture de connexion expiré)
Nom: connection_read_timeout
Description: L'intermédiaire s'attendait à recevoir des données sur la connexion (par exemple, une partie de la réponse) mais n'a reçu aucune nouvelle donnée dans la limite de temps configurée.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 504
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.11. Connection Write Timeout (Délai d'écriture de connexion expiré)
Nom: connection_write_timeout
Description: L'intermédiaire a tenté d'écrire des données sur la connexion mais n'a pas pu le faire (par exemple, parce que son tampon était plein).
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 504
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.12. Connection Limit Reached (Limite de connexion atteinte)
Nom: connection_limit_reached
Description: L'intermédiaire est configuré pour limiter le nombre de ses connexions au prochain saut et a dépassé cette limite.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 503
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.13. TLS Protocol Error (Erreur de protocole TLS)
Nom: tls_protocol_error
Description: L'intermédiaire a rencontré une erreur TLS lors de la communication avec le prochain saut, que ce soit pendant la négociation ou après.
Paramètres supplémentaires:
alert-message: Un jeton (Token) représentant le sous-champ de description applicable du message d'alerte TLS [TLS] Section 6; par exemple, "handshake_failure" ou "certificate_expired".
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.14. TLS Certificate Error (Erreur de certificat TLS)
Nom: tls_certificate_error
Description: L'intermédiaire a rencontré une erreur lors de la vérification du certificat présenté par le prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.15. TLS Alert Received (Alerte TLS reçue)
Nom: tls_alert_received
Description: L'intermédiaire a reçu une alerte TLS du prochain saut.
Paramètres supplémentaires:
alert-id: Un entier (Integer) contenant le champ applicable du message d'alerte TLS [TLS] Section 6.alert-message: Un jeton (Token) représentant le sous-champ de description applicable du message d'alerte TLS [TLS] Section 6; par exemple, "handshake_failure" ou "certificate_expired".
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.16. HTTP Request Error (Erreur de requête HTTP)
Nom: http_request_error
Description: L'intermédiaire génère une réponse client (4xx) au nom du serveur d'origine. Les codes d'état applicables incluent (mais ne sont pas limités à) 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 et 429.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: Code d'état 4xx applicable
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.17. HTTP Request Denied (Requête HTTP refusée)
Nom: http_request_denied
Description: L'intermédiaire a refusé la requête HTTP en fonction de sa configuration et/ou de ses paramètres de politique. La requête n'a pas été transmise au prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 400
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.18. HTTP Incomplete Response (Réponse HTTP incomplète)
Nom: http_response_incomplete
Description: L'intermédiaire a reçu une réponse incomplète du prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.19. HTTP Response Header Section Too Large (Section d'en-tête de réponse HTTP trop grande)
Nom: http_response_header_section_size
Description: L'intermédiaire a reçu une réponse à la requête dont la section d'en-tête est considérée comme trop grande.
Paramètres supplémentaires:
header-section-size: Un entier (Integer) indiquant la taille de l'en-tête reçu.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.20. HTTP Response Header Field Line Too Large (Ligne de champ d'en-tête de réponse HTTP trop grande)
Nom: http_response_header_size
Description: L'intermédiaire a reçu une réponse à la requête contenant une ligne de champ d'en-tête considérée comme trop grande.
Paramètres supplémentaires:
header-name: Une chaîne (String) indiquant le nom du champ d'en-tête qui a déclenché l'erreur.header-size: Un entier (Integer) indiquant la taille du champ d'en-tête qui a déclenché l'erreur.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.21. HTTP Response Body Too Large (Corps de réponse HTTP trop grand)
Nom: http_response_body_size
Description: L'intermédiaire a reçu une réponse à la requête dont le corps est considéré comme trop grand.
Paramètres supplémentaires:
body-size: Un entier (Integer) indiquant la taille du corps reçu.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.22. HTTP Response Trailer Section Too Large (Section de fin de réponse HTTP trop grande)
Nom: http_response_trailer_section_size
Description: L'intermédiaire a reçu une réponse à la requête dont la section de fin est considérée comme trop grande.
Paramètres supplémentaires:
trailer-section-size: Un entier (Integer) indiquant la taille de la fin reçue.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.23. HTTP Response Trailer Field Line Too Large (Ligne de champ de fin de réponse HTTP trop grande)
Nom: http_response_trailer_size
Description: L'intermédiaire a reçu une réponse à la requête contenant une ligne de champ de fin considérée comme trop grande.
Paramètres supplémentaires:
trailer-name: Une chaîne (String) indiquant le nom du champ de fin qui a déclenché l'erreur.trailer-size: Un entier (Integer) indiquant la taille du champ de fin qui a déclenché l'erreur.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.24. HTTP Response Transfer-Coding Error (Erreur de codage de transfert de réponse HTTP)
Nom: http_response_transfer_coding
Description: L'intermédiaire a rencontré une erreur lors du décodage du codage de transfert de la réponse.
Paramètres supplémentaires:
coding: Un jeton (Token) contenant le codage spécifique (du "HTTP Transfer Coding Registry") qui a causé l'erreur.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.25. HTTP Response Content-Coding Error (Erreur de codage de contenu de réponse HTTP)
Nom: http_response_content_coding
Description: L'intermédiaire a rencontré une erreur lors du décodage du codage de contenu de la réponse.
Paramètres supplémentaires:
coding: Un jeton (Token) contenant le codage spécifique (du "HTTP Content Coding Registry") qui a causé l'erreur.
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.26. HTTP Response Timeout (Délai de réponse HTTP expiré)
Nom: http_response_timeout
Description: L'intermédiaire a atteint une limite de temps configurée en attendant une réponse complète.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 504
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.27. HTTP Upgrade Failed (Échec de mise à niveau HTTP)
Nom: http_upgrade_failed
Description: Le processus de négociation d'une mise à niveau de version HTTP entre l'intermédiaire et le prochain saut a échoué.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.28. HTTP Protocol Error (Erreur de protocole HTTP)
Nom: http_protocol_error
Description: L'intermédiaire a rencontré une erreur de protocole HTTP lors de la communication avec le prochain saut. Cette erreur ne doit être utilisée que lorsqu'une erreur plus spécifique n'est pas définie.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: false
Référence: RFC 9209
2.3.29. Proxy Internal Response (Réponse interne du proxy)
Nom: proxy_internal_response
Description: L'intermédiaire a lui-même généré la réponse sans tenter de se connecter au prochain saut.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: Code d'état le plus approprié pour la réponse
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.30. Proxy Internal Error (Erreur interne du proxy)
Nom: proxy_internal_error
Description: L'intermédiaire a rencontré une erreur interne sans rapport avec le serveur d'origine.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 500
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.31. Proxy Configuration Error (Erreur de configuration du proxy)
Nom: proxy_configuration_error
Description: L'intermédiaire a rencontré une erreur concernant sa configuration.
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 500
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.3.32. Proxy Loop Detected (Boucle de proxy détectée)
Nom: proxy_loop_detected
Description: L'intermédiaire a tenté de transmettre la requête à lui-même, ou une boucle a été détectée à l'aide d'une autre méthode (par exemple, [RFC8586]).
Paramètres supplémentaires: Aucun
Code d'état HTTP recommandé: 502
Réponse générée uniquement par des intermédiaires: true
Référence: RFC 9209
2.4. Defining New Proxy Error Types (Définition de nouveaux types d'erreur de proxy)
De nouveaux types d'erreur de proxy peuvent être définis en les enregistrant dans le registre "HTTP Proxy Error Types".
Les demandes d'enregistrement sont examinées et approuvées par examen d'expert, conformément à la section 4.5 de [RFC8126]. Un document de spécification est apprécié mais n'est pas requis.
Les experts doivent prendre en compte les éléments suivants lors de l'évaluation des demandes:
- Retour de la communauté
- Si la valeur est définie de manière suffisamment claire
- Les types génériques sont préférés aux valeurs spécifiques au fournisseur, spécifiques à l'application ou spécifiques au déploiement. Si la communauté ne parvient pas à un consensus sur une valeur générique, le nom du type doit être spécifique en conséquence (par exemple, préfixé avec quelque chose identifiant le fournisseur, l'application ou le déploiement).
- Les paramètres supplémentaires ne doivent pas entrer en conflit avec les paramètres Proxy-Status enregistrés.
Les demandes d'enregistrement doivent utiliser le modèle suivant:
Nom: [Nom du type d'erreur de proxy, de type Token]
Description: [Description des conditions qui génèrent le type d'erreur de proxy]
Paramètres supplémentaires: [Zéro ou plusieurs paramètres facultatifs et leurs types structurés autorisés]
Code d'état HTTP recommandé: [Code d'état HTTP approprié pour cette entrée]
Réponse générée uniquement par des intermédiaires: ['true' ou 'false']
Référence: [Référence à la spécification définissant ce type d'erreur; facultatif]
Remarques: [Facultatif]
Si le type d'erreur de proxy peut apparaître dans une réponse qui n'a pas été générée par l'intermédiaire -- par exemple, lorsqu'une erreur est détectée lors du streaming d'une réponse à partir d'une connexion en aval, entraînant l'ajout d'un champ de fin Proxy-Status -- 'Réponse générée uniquement par des intermédiaires' doit être 'false'. Si le type d'erreur de proxy n'apparaît que dans les réponses générées par l'intermédiaire, il doit être 'true'.
Pour plus de détails sur l'envoi d'une demande d'enregistrement, consultez le registre à https://www.iana.org/assignments/http-proxy-status.