Site accessible, test en échec : CORS, erreur 403 et délais

Analysez les échecs de connexion aux niveaux DNS, TLS et HTTP. Comprenez CORS, les erreurs 403 et les délais dépassés avant de conclure à un blocage IP.

Ordinateur portable entrouvert sur fond sombre

Vous avez déjà ouvert le site dans le navigateur, mais l'outil de détection affiche un voyant rouge. À ce moment-là, deux jugements opposés sont les plus faciles à porter : soit vous pensez que votre IP est bloquée, soit vous considérez que l'outil de détection ne sert à rien.

Ne prenez pas parti trop vite. Ouvrir directement la page d'accueil, lire une interface via un script de page et effectuer une requête depuis un serveur distant sont trois tests différents. Ce n'est que si la cible, la méthode de requête, le point de sortie d'accès et le critère de succès sont suffisamment cohérents que les résultats peuvent être comparés directement.

Le but du dépannage de ce type de problème n'est pas de trouver un moyen de faire passer la carte au vert, mais de déterminer à quelle étape l'échec se produit et s'il affecte ce que vous voulez vraiment faire.

Demandez d'abord à l'outil de détection : quelle partie testez-vous ?

« Connecté » n'est pas un état qui couvre toutes les fonctions. Une visite peut passer par la résolution du nom de domaine, la connexion réseau, la connexion sécurisée et le traitement de l'application, et les autorisations de compte constituent un autre niveau de jugement.

Élément de vérification

Ce que le succès peut indiquer

Ce qu'on ne peut pas en déduire

Résolution DNS

Le chemin de résolution sélectionné a renvoyé l'enregistrement du domaine

L'adresse correspondante est forcément accessible

Connexion TCP

Depuis l'emplacement du test, il est possible de se connecter à l'adresse et au port cibles

Le certificat HTTPS ou les fonctions de la page sont normaux

Poignée de main TLS

Cette connexion a terminé la négociation de sécurité correspondante

La connexion et les interfaces métier sont toutes disponibles

Réponse HTTP

La cible ou un service intermédiaire a renvoyé une réponse

Le contenu de la réponse est forcément la page attendue

Utilisation réelle de la page

La session actuelle a accompli une certaine opération

Les autres comptes, protocoles et sorties sont les mêmes

Réussir à se connecter à une icône, une ressource statique ou une interface d'état prouve seulement que cet élément de détection a répondu à ce moment-là. Cela ne peut pas remplacer la vérification de la connexion, du téléversement, du paiement ou d'autres fonctions métier.

De même, l'absence de réponse à un ping ne prouve pas à elle seule que le site est indisponible. ICMP utilise un protocole différent de celui employé pour l'accès web ; le réseau peut ne pas répondre au premier tout en autorisant des connexions HTTPS normales.

Première catégorie : la page s'ouvre, mais le script de test ne parvient pas à lire le résultat

Ce type de problème doit être examiné en priorité sous l'angle des restrictions cross-origin.

Supposons que la page de test s'exécute sur le site A et que son script cherche à lire la réponse du site B. Le navigateur vérifie si le site B autorise cette origine à lire les données ; ce n'est pas la même question de permission que lorsque vous ouvrez directement le site B dans la barre d'adresse.

Le guide CORS du MDN explique que les requêtes cross-origin sont soumises aux mécanismes de sécurité du navigateur. La requête a pu atteindre la cible, mais la réponse ne peut pas être fournie au script ; il est aussi possible que l'autorisation de poursuivre n'ait pas été accordée dès la phase de pré-vérification.

Plus délicat encore, l'erreur que reçoit le script est souvent peu précise. Il n'est pas toujours en mesure de distinguer une restriction cross-origin, un problème de connexion et d'autres causes d'échec. Si un outil affiche tous ces cas comme « inaccessible », il risque de transformer à tort une impossibilité de vérification en un constat d'indisponibilité.

Un utilisateur ordinaire peut vérifier si l'accès direct reste stable, si la page fonctionne normalement et conserver les messages d'erreur observés lors du test. Un développeur doit consulter la console du navigateur et les journaux réseau pour confirmer la présence d'erreurs CORS ou de pré-vérification, plutôt que de conclure sur l'état d'une IP à partir d'une simple exception générique.

Ne désactivez pas les protections de sécurité du navigateur pour valider la connexion. L'environnement ainsi obtenu s'écarte de celui d'un utilisateur normal et ne corrige pas la politique cross-origin du service cible.

Deuxième catégorie : méthode de requête, chemin ou état de connexion différents

Certains programmes de test utilisent des requêtes HEAD pour réduire le trafic. Selon la documentation MDN sur HEAD, cette méthode sert à obtenir les en-têtes de réponse associés, sans renvoyer le corps de la réponse.

Mais un site donné peut appliquer des règles différentes pour HEAD, GET et les interfaces métier. Par exemple, un chemin n'autorise pas HEAD, alors que le GET envoyé par le navigateur de l'utilisateur permet d'obtenir la page normalement. Dans ce cas, il faut examiner la méthode et le chemin ciblés, sans généraliser l'échec d'un chemin unique à l'indisponibilité de tout le site.

L'état de connexion crée aussi des différences. Lorsque vous ouvrez directement le site, le navigateur a peut-être déjà une session valide enregistrée ; le script de test ne dispose pas nécessairement des mêmes cookies, jetons d'accès ou autres éléments de contexte. Inversement, une page d'accueil qui répond normalement ne prouve pas qu'une fonction métier accessible après connexion a été testée avec succès.

Pour ce type de problème, il est conseillé de définir d'abord des critères de succès clairs : s'agit-il d'ouvrir la page d'accueil, de se connecter à son compte ou d'effectuer une opération normale ? Une fois les critères précisés, choisissez la méthode de vérification correspondante.

Troisième catégorie : une réponse a été reçue, mais ce n'est pas celle attendue

403 : le refus de la requête ne prouve pas que l'IP est définitivement bannie

La documentation de Cloudflare sur l'erreur 403 mentionne des causes liées aux autorisations et aux règles de sécurité. Le serveur d'origine, le CDN ou les politiques de sécurité peuvent tous intervenir dans le traitement de la requête.

Dans certains cas, la page d'erreur fournit un identifiant de requête, une indication de règle ou un canal de support joignable. Conserver ces informations aide davantage à localiser le problème que de dire seulement au support « mon IP ne fonctionne pas ».

Cependant, ne considérez pas qu'un logo de marque présent sur une page d'erreur désigne à lui seul l'entité responsable. Il faut tenir compte des services par lesquels la requête est passée et de la configuration du site pour déterminer qui doit traiter le problème.

429 : réduisez d'abord le nombre de requêtes, ne confondez pas rafraîchissement et diagnostic

Le code 429 indique généralement que la fréquence des requêtes est limitée. La limitation peut porter sur l'IP, mais aussi sur le compte, les identifiants, les cookies ou une ressource particulière ; tous les services ne comptent pas de la même manière.

La RFC 6585 ne précise pas comment le serveur doit identifier le demandeur ; la documentation MDN sur le code 429 décrit également différentes méthodes de limitation et l'éventuel en-tête Retry-After indiquant une attente.

En cas de limitation, arrêtez les rafraîchissements continus et les tentatives en masse, et respectez le délai d'attente demandé par le service. Multiplier les requêtes pour vérifier un résultat de limitation risque au contraire de maintenir le diagnostic sous l'effet de cette limitation.

Délai d'attente dépassé : examinez d'abord le seuil du test et la phase d'échec

Un dépassement de délai signifie seulement que le test n'a pas abouti dans le temps imparti. L'échec peut survenir lors de la résolution, de la connexion, de la négociation de sécurité ou de l'attente de la réponse ; il peut aussi être lié à la file d'attente du navigateur, à la charge de l'appareil ou à des tests simultanés.

La « durée du test » ne correspond pas nécessairement à la latence aller-retour du réseau. Un résultat de test HTTP peut inclure le temps de traitement du service et de transfert des ressources ; on ne peut pas le comparer directement à un chiffre de ping.

Un dépassement ponctuel mérite d'être re-testé après un intervalle normal ; un dépassement persistant nécessite de noter la phase d'échec. Ne concluez pas qu'une adresse est durablement indisponible sur la base d'un seul franchissement de seuil.

Quatrième catégorie : les deux tests ne partent pas du même point de sortie

Le proxy du navigateur, le proxy système et le VPN peuvent couvrir des applications et des protocoles différents. Lorsqu'un appareil possède à la fois une adresse IPv4 et une adresse IPv6, les deux types de requêtes peuvent aussi emprunter des chemins distincts.

Il existe un autre cas facile à négliger : l'outil de test utilise un serveur distant pour interroger la cible. Il reflète alors l'accessibilité depuis cet emplacement de test, et non la capacité d'accès de l'IP publique que vous utilisez actuellement.

Si votre question est « mon IP peut-elle accéder à cette application ? », la preuve principale doit provenir de l'accès réel effectué depuis l'appareil et le réseau actuels. Un contrôle à distance peut confirmer une anomalie générale côté serveur, mais il ne remplace pas une vérification depuis votre propre point de sortie.

Par conséquent, lorsque vous comparez les résultats, vous devez au minimum vérifier la source du test, la famille d'adresses, l'état du proxy et l'adresse cible. Dire simplement « nous testons le même site web » ne suffit pas à garantir des conditions de test identiques.

En modifiant une seule condition à la fois, vous localiserez le problème beaucoup plus rapidement.

Commencez par enregistrer votre adresse publique actuelle via Recherche d’adresse IP, puis utilisez Tests d’accès aux services en comparaison avec un accès normal. Ensuite, vérifiez chaque symptôme réel un par un.

  1. Sur le même réseau et dans le même navigateur, confirmez si la page ou la fonction cible fonctionne de manière stable.

  2. Examinez la cible de détection et la raison renvoyée, en distinguant les restrictions cross-origin, les codes d'état, les échecs de résolution et les délais d'attente.

  3. Utilisez un profil de navigateur propre et temporaire pour la comparaison, notez les différences d'extensions, de session et de permissions, sans vous précipiter pour effacer l'environnement existant.

  4. Vérifiez IPv4, IPv6 et le chemin du proxy ; si vous changez de réseau, utilisez-le uniquement comme preuve comparative, sans conclure immédiatement que l'IP d'origine est bloquée.

  5. Si nécessaire, complétez avec Recherche d’enregistrements DNS ou Vérification HTTP et TLS, en notant les emplacements de test utilisés par ces outils pour éviter de confondre les sources d'observation.

Changer de réseau modifie simultanément l'adresse, le chemin de résolution et certaines politiques réseau. « Ça marche après changement » peut réduire le champ du problème, mais ne peut pas indiquer à lui seul quel facteur a joué.

Lorsqu'il s'agit d'erreurs de certificat, ne déclarez pas non plus le problème résolu en ignorant les avertissements de certificat. Vérifiez l'heure système, la chaîne de certificats, le domaine cible et la configuration réseau autorisée ; sur les appareils d'entreprise, un administrateur doit confirmer les politiques concernées.

Que fournir au support pour obtenir une réponse efficace ?

Vous pouvez décrire le problème sous forme d'un enregistrement reproductible : à quelle heure, sur quel réseau et navigateur, quel chemin public a été consulté, quelle opération normale a été effectuée, et quel résultat a été obtenu ; ainsi que la cible, la méthode et l'erreur de l'outil de détection.

Si vous avez un identifiant de requête ou un code d'état de réponse, fournissez-les également. L'IP publique ne doit être communiquée que par un canal de support de confiance si le diagnostic l'exige vraiment. Les mots de passe, cookies, en-têtes Authorization et URL complètes avec jetons d'accès ne doivent pas être collés dans des tickets publics ou des captures d'écran.

Une conclusion utile doit être suffisamment précise, par exemple « la page d'accueil s'ouvre, mais un script cross-origin ne peut pas lire le résultat », ou « une requête depuis la sortie actuelle est limitée en débit ». C'est plus proche d'une solution que « le réseau ne marche pas », et plus révélateur de la disponibilité réelle qu'une page de test entièrement verte.

Deux cas comparatifs de défaillance en couches : différents points d'échec du DNS au TLS

Supposons qu'un même domaine résolve le DNS avec succès dans un environnement, mais que la connexion TCP échoue. L'obtention d'un enregistrement A ou AAAA indique seulement que des enregistrements ont été renvoyés à ce moment-là, pas que les adresses correspondantes sont nécessairement joignables. L'échec peut provenir du pare-feu local, des politiques de l'opérateur, de la fermeture du port cible ou d'un équipement sur le chemin. Affirmer directement que l'IP est bloquée revient à sauter des preuves intermédiaires. Une déclaration plus précise serait « la connexion TCP vers l'adresse cible n'a pas été établie depuis le réseau actuel ».

Un autre exemple est le cas où la poignée de main TLS se termine et que HTTP renvoie 403, ce qui indique que la connexion est entrée dans le traitement de la couche application, mais il faut aussi vérifier si le client a activé la validation du certificat. Ce n'est que si la validation est activée et réussie que l'on peut dire que la confiance du certificat et la vérification du nom d'hôte ont réussi ; un test qui ignore la validation n'a pas cette preuve. 403 signifie généralement que la requête a été refusée, ce qui peut être lié au chemin, à l'identité, aux permissions ou à la politique de sécurité, et ne peut pas prouver à lui seul le gel du compte.

La différence entre ces deux cas réside dans la couche d'échec. L'échec TCP se produit au stade de la connexion de transport, tandis que l'échec HTTP après TLS réussi se produit au stade du traitement applicatif. En précisant la couche, vous évitez de confondre « connexion injoignable » et « requête refusée ». Par exemple, si un nœud de détection distant indique un échec TCP, cela signifie seulement que la sortie de ce nœud ne peut pas établir de connexion, et ne peut pas directement conclure que votre machine locale échoue également. Et vice versa.

Conservez d'abord l'erreur d'origine : un délai d'attente signifie que l'étape correspondante n'a pas été achevée dans le temps imparti, une réinitialisation de connexion signifie que la connexion a été activement terminée, mais les deux peuvent provenir de l'extrémité cible, d'un équipement sur le chemin ou de l'environnement client, et ne peuvent pas être attribuées uniquement au pare-feu sur la base du libellé de l'erreur. Si vous avez déjà reçu un HTTP 403, conservez la méthode de requête, le chemin, l'heure et l'identifiant de requête, et demandez au fournisseur de service de vérifier les règles. Ce n'est qu'en identifiant clairement l'étape d'échec que les comparaisons ultérieures seront ciblées.

Le jugement en couches influence également les actions suivantes. En cas d'échec TCP, changer de réseau, de famille d'adresses ou vérifier le proxy peut être utile ; en cas de 403 après TLS réussi, il faut réduire les nouvelles tentatives inefficaces et plutôt vérifier la méthode et le chemin de la requête, ou confirmer si une politique de sécurité a été déclenchée. Utiliser un seul résultat pour généraliser l'état du site entier ou du compte surestimerait la portée des preuves.

Rédigez un enregistrement de ticket reproductible : heure, cible, point d'observation et étape

Un ticket efficace n'est pas une capture d'écran d'erreur en rouge, mais un enregistrement qui peut être reproduit depuis un point d'observation. Il est conseillé d'inclure l'heure et le fuseau horaire de l'incident, l'URL cible consultée, le navigateur ou client utilisé, le type de réseau de l'appareil, ainsi que l'emplacement d'exécution de l'outil de détection. Le point d'observation est particulièrement important : s'agit-il du navigateur local, d'un nœud de détection distant, ou d'une requête active depuis le serveur ? La signification de l'échec diffère selon le point d'observation.

Il faut aussi préciser l'étape de l'échec. Si possible, distinguez DNS, TCP, TLS, HTTP et les fonctions après connexion. L'erreur d'origine doit conserver le texte ou le code d'état, par exemple le délai de connexion, l'ID de requête dans la page 403, ou le code d'erreur de certificat. Les informations sensibles doivent être masquées : ne collez pas de mots de passe, cookies, en-têtes Authorization ou URL complètes avec jetons d'accès dans un ticket. L'IP publique ne doit être fournie que par un canal de confiance si nécessaire.

Ne prétendez pas que « toutes les régions sont en délai d'attente » ou que « tout le pays est inaccessible ». Vous ne connaissez que le point d'observation que vous avez testé. Vous pouvez écrire « depuis le réseau actuel, à partir de telle heure, trois délais TCP consécutifs se sont produits », ce qui est plus crédible que « tout le réseau est en panne ». Les résultats de détection distants peuvent servir de preuve accessoire, mais leur emplacement de test réel et leur heure doivent être indiqués.

Si vous souhaitez citer des preuves réseau comme RDAP, ASN ou BGP, vous pouvez vous référer à l'approche de RDAP, ASN, BGP et RPKI : comprendre les données d’une IP : confirmez d'abord l'attribution de l'adresse avec RDAP, puis utilisez BGP ou les données de routage pour expliquer les changements de chemin. Mais l'attribution ne signifie pas la malveillance, et un changement d'ASN ne signifie pas une panne. Les preuves doivent étayer la conclusion, et non servir à créer la panique.

Pour le dépannage impliquant des listes noires d'IP ou des phénomènes de CAPTCHA, IP sur liste de blocage et CAPTCHA répétés : que faire ? fournit des orientations plus spécifiques. Dans le ticket, indiquez si vous avez rencontré un CAPTCHA ou un refus explicite, et si cela est lié à l'état de connexion. Un CAPTCHA peut être simplement un contrôle de fréquence ou une alerte de risque, et n'équivaut pas à un gel de compte.

Enfin, ne prenez pas le seuil de délai d'attente unique d'un outil comme une norme universelle pour toutes les plateformes. Les différents produits de détection ont des politiques de délai, de nouvelle tentative et de concurrence différentes, et le seuil ne s'applique qu'au test effectué par cet outil à ce moment-là. Par conséquent, le ticket doit indiquer clairement l'outil utilisé et sa configuration. Un enregistrement reproductible permettra au personnel de support de localiser l'étape, plutôt que de déduire le problème à partir de la conclusion.