Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1532 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Curl : SSL session id

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Curl : SSL session id

n°1855946
masacc'
Posté le 27-02-2009 à 13:43:28  profilanswer
 

Bonjour,
 
j'ai un site dynamique construit à partir de données récupérées d'un autre site web interrogé via Curl en https. Dans les faits, une première requête https en POST est faite pour s'authentifier (login + mdp), puis on parse la réponse (uniquement les headers) pour récupérer le cookie de session. Ce cookie est ensuite passé dans les headers de la seconde requête (toujours via Curl et en https) pour récupérer les informations dont j'ai besoin.
 
Ce système marchait parfaitement jusqu'à maintenant mais depuis peu, le site distant interrogé, hébergé sur différents serveurs (ce sont des serveurs Hosted Exchange), ne répond correctement à ma 2ème requête que de manière aléatoire, dans le cas contraire, je reçois une erreur "440 Login Timeout".
 
J'ai contacté le gestionnaire du site distant et d'après eux, les seuls changements qu'ils ont effectués qui peuvent impacter mon service,

Citation :

ce sont des ajustements sur les politiques de load balancing, en particulier, la plate-forme utilise maintenant le SSL ID comme élément de tracking de session

.
voilà la suite de la réponse pour information :

Citation :

Si votre application ne réutilise pas le même SSL ID au cours de ses traitements (ce que fait un navigateur), il est possible que vous n'arriviez pas sur le même serveur final, d'où des comportements incohérents potentiels

.
 
Si j'ai bien compris la réponse, ma question est donc la suivante : est-il possible avec Curl d'enchaîner 2 requêtes en gardant le même SSL ID ? Sinon qqun voit-il une autre solution ?
 
Voici également un article trouvé dans les mailing list du site de Curl : http://curl.haxx.se/mail/curlphp-2003-08/0050.html.
 
La personne dans cet article semble avoir le même problème que moi et la réponse rendu par Daniel Stenberg semble vouloir dire qu'il n'existe rien dans Curl capable de faire ceci (cependant cet article date de 2003 mais je ne trouve rien de plus récent sur le sujet).
 
Je pense qu'une solution serait de pouvoir enchainer les requêtes en restant dans la même session Curl, mais mes essais ne sont pas concluants.

mood
Publicité
Posté le 27-02-2009 à 13:43:28  profilanswer
 

n°1856563
Bouchon2
Crabe glauque
Posté le 01-03-2009 à 19:49:11  profilanswer
 

Si les deux requêtes sont faites l'une à la suite de l'autre dans le script il n'y a aucun problème, il suffit de demander à cURL  d'utiliser HTTP 1.1 et de maintenir la connexion ouverte (avec Connection: Keep-Alive et éventuellement Keep-Alive: t) et de vérifier que tu n'utilises pas curl_close entre les deux. Dans le lien que tu donnes le problème est différent, la personne cherche à faire les deux connexions lors d'exécutions séparées de PHP, ce qui est impossible effectivement impossible à moins d'utiliser les fonctions d'ouverture de socket persistantes (pfsockopen)

n°1856648
masacc'
Posté le 02-03-2009 à 10:38:56  profilanswer
 

Je viens d'essayer avec les paramètres que tu m'as fourni Bouchon2, mais ça ne marche toujours pas... Ci-après un résumé de mon code. Je récupère bien le cookie lors de la première connexion, je n'ai jamaisd e problème de ce côté là. Mais cependant, maintenant quand j'enchaine les 2 requêtes, je reçois une erreur 404 pour la deuxième...
Est-ce que j'ai mal fait qqch ?
 

Code :
  1. $cr = curl_init();
  2.  
  3. //options
  4. curl_setopt($cr, CURLOPT_URL, "https://monserveur.com" );
  5. curl_setopt($cr, CURLOPT_PROXY, "monproxy:1234" );
  6. curl_setopt($cr, CURLOPT_HEADER, TRUE);
  7. curl_setopt($cr, CURLOPT_RETURNTRANSFER, TRUE);
  8.        
  9. curl_setopt($cr, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
  10. $headers = array(
  11. 'Keep-Alive: 300',
  12. 'Connection: keep-alive'
  13. );
  14.        
  15. curl_setopt($cr, CURLOPT_HTTPHEADER, $headers);
  16.        
  17. $postdata =  "LOGIN=monlogin&PASSWD=monmdp";
  18.        
  19. curl_setopt($cr, CURLOPT_POST, TRUE);
  20. curl_setopt($cr, CURLOPT_POSTFIELDS, $postdata);
  21.      
  22. //get the response
  23. $sock = curl_exec($cr);
  24.                
  25. /*** parse the response ***/
  26. ereg("(sessionid=[0-9a-zA-Z-]*);",$sock,$regs);
  27. $sessionid=$regs[1];
  28. ereg("(cadata=.*); HttpOnly",$sock,$regs);
  29. $cadata=$regs[1];
  30.        
  31. $cookie = $sessionid.'; '.$cadata;
  32. /***********************/
  33.      
  34. /********************/
  35. /****2EME REQUETE****/
  36. /********************/
  37. curl_setopt($cr, CURLOPT_URL, "https://monserveur.com/Exchange/" );
  38.        
  39. $headers = array(
  40. 'Cookie: '.$cookie,
  41. 'Content-Type: text/xml; charset="UTF-8"',
  42. 'Keep-Alive: 300',
  43. 'Connection: keep-alive'
  44. );
  45.        
  46. curl_setopt($cr, CURLOPT_HTTPHEADER, $headers);
  47.      
  48. //get the response
  49. $sock = curl_exec($cr);
  50.        
  51. //close the resource
  52. curl_close($cr);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Curl : SSL session id

 

Sujets relatifs
PHP cURL : simuler un bouton "Submit" / méthode POSTPerte Session Https lors de l'ouverture d'un document office
Bouton d'annulation en PHP et variables de sessionTransmission variable de session
ouvrir une page à distance en HTTP GET, y envoyer des HTTP POST, cUrl,[SCRIPT] recuperer les logs d ouverture de session
Gros problème de session[Résolu] Ne pas charger une page pdt la vérifi des variable de session
retour à la page précédente : conserver les données de session[Resolu] Comment modifier la durée de vie d'un cookies existant ?
Plus de sujets relatifs à : Curl : SSL session id


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR