Lorsqu'une application, ou un site web, communique en HTTPS, il peut arriver notamment pour des raisons de sécurité, que des échanges échouent sur une configuration particulière. Par exemple sur le poste de développement tous les appels HTTPS (webservice, API REST...) passent, mais sur le serveur qui héberge l'application ou le site, il n'y a pas de réponse, ou pas celle attendue.

 

Dans ce cas, il est recommandé de tester des appels directs des serveurs avec lesquels l'application doit échanger, dans les différents modes possibles. Cela permet par recoupements d'orienter les recherches sur l'origine de l'échec de l'appel HTTPS, et donc de trouver la façon de le résoudre.

 

Voici un méthode :

  • déployer une mise à jour de l'application,
  • dans l'assistant de création de ce cette version sélectionner "Choisir les outils optionnels à inclure" à l'étape complément 1/2,


  • puis sélection "WDScript - Editeur de scripts WLangage" dans la liste,


  • installer la mise à jour de l'application sur le poste qui ne parvient pas à faire les échanges HTTPS,
  • lancer WDScript. Attention aux autorisations, car avec un lancement interactif, WDScript aura tous les privilèges de l'utilisateur en cours, celui qui a ouvert la session Windows. Il peut être bien de lancer WDScript :
    • avec l'utilisateur par défaut,
    • avec une élévation de privilège en tant qu'administrateur,
    • avec un autre utilisateur, celui qui exécute le traitement qui ne parvient pas à échanger. Par exemple si c'est un site web, on pourra lancer WDScript avec l'utilisateur IUSR en pressant Shift sur l'exécutable.
  • coller dans le script le code ci-dessous, en complétant le tableau "sTabURL" pour inclure des serveurs génériques, et bien sûr les serveurs avec lesquels la difficulté apparaît,
  • exécuter le script.

Les différents retours des appels, dans les différents modes possibles, doivent permettre de cerner l'origine exacte du blocage des échanges.

 

 

sTabURL est un tableau de chaîne
nTabMode est un tableau associatif d'entiers
MaRequete est une httpRequête
MaRéponse est une httpRéponse

nTabMode["WININET"] = 1
nTabMode["Multiplateforme"] = 2


sTabURL.Ajoute("https://pcsoft.fr")
sTabURL.Ajoute("https://www.google.fr/")
//sTabURL.Ajoute("https://.../") // Ajouter toutes les adresses avec lesquels il doit y avoir des échanges


sOS est une chaîne = SysVersionWindows(sysVersionNuméro)+"/"+SysVersionWindows(sysVersionCompil)
TraceConstruit("Exécution depuis %1, avec framework %2 (WDCOM %3)"+RC, sOS, VersionWINDEV(versionFramework), ExeInfo(exeVersion, "WD"+Val(VersionWINDEV())+"0COM"+(EnMode64bits ? "64" SINON "")+".DLL"))


POUR TOUT ÉLÉMENT nMode, sLibMode de nTabMode

HTTPParamètre(httpParamètreMode, nMode)

POUR TOUT ÉLÉMENT sURL de sTabURL

SI PAS httpRequête(sURL) ALORS
TraceConstruit("## En mode %1 (%2) avec la fonction HTTPRequete (compat) accès au site %3 : %4", sLibMode, nMode, sURL, "Impossible"+RC+ErreurInfo(errComplet))
SINON
TraceConstruit("## En mode %1 (%2) avec la fonction HTTPRequete (compat) accès au site %3 OK, avec la réponse %4", sLibMode, nMode, sURL, ExtraitChaîne(HTTPDonneRésultat(httpEntête), 1, RC))
FIN

SI nMode > 1 ALORS // le type passe systématiquement en implémentation multiplateforme
MaRequete..URL = sURL
MaRequete.TimeoutConnexion = 5s
MaRéponse = HTTPEnvoie(MaRequete)

SI ErreurDétectée ALORS
// il n'a pas été possible de joindre le serveur communication impossible
TraceConstruit("## En mode %1 (%2) avec le type HTTPRequete accès au site %3 : %4", sLibMode, nMode, sURL, "Impossible"+RC+ErreurInfo(errComplet))
SINON
// Ok la requête est envoyée
TraceConstruit("## En mode %1 (%2) avec le type HTTPRequete accès au site %3 OK, avec la réponse %4", sLibMode, nMode, sURL, MaRéponse.CodeEtat)
FIN
FIN
FIN
FIN

 

 

A noter que les procédures internes sont autorisés dans les scripts. On peut donc suivre plus finement les échanges dans le cas de l'appel avec HTTPEnvoie, en utilisant la propriété ..ProcédureTrace.

 

Autre billet lié à WDScript :

Comment installer WDScript sur un serveur ou sur un poste pour lancer des scripts en WLangage ?

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée