IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XMLRAD Discussion :

Les Cookies 4° ! : LA SOLUTION


Sujet :

XMLRAD

  1. #1
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut Les Cookies 4° ! : LA SOLUTION
    Bonjour,

    Après m'être longuement débattu avec les cookies et leur non prise en compte par l'application, j'ai enfin trouvé l'origine du problème et par la même sa solution que je vous expose ici...

    Hypothèse : un XMLRad 7.08.708, téléchargé le 23/01/03 installé sur un Win2000 Sp2 avec IIS 5...

    Je remercie tout d'abord Julien C. qui m'a mis sur la piste :
    Citation Envoyé par Julien C.
    N'oublies pas que les cookies sont restitués automatiquement dans le Context, que si l'URL d'invocation est la même que lorsque les Cookies ont été inscrits sur le poste client.
    L'URL (DOMAIN + PATH) ne variant pas, j'ai donc examiné les cookies générés par les deux applis (celle qui fonctionne et l'autre) et recherché des différences. J'ai trouvé dans le cookies de l'application "buguée" que la fin de l'URL avait un "slash" surnuméraire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    localhost/TESTBin/TEST.dll//  
    au lieu de
    localhost/TESTBin/TEST.dll/
    En examinant les paramètres de XMLRad, j'ai trouvé dans "Aliases" ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TESTDLL  =>  /{$XMLC_InstanceName}Bin/TEST.dll/
    Petite remarque : Ce paramètre a été défini par XMLRad à la création du projet et je ne l'ai pas modifié par la suite ! Ce projet n'était pas non plus un réimport mais une création pure...

    J'ai corrigé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TESTDLL  =>  /{$XMLC_InstanceName}Bin/TEST.dll
    J'ai rectifié tous les liens construits avec cet alias comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href="{/document/Aliases/TESTDLL}FormTest"><b>Mon test</b></a>
    est devenu
    <a href="{/document/Aliases/TESTDLL}/FormTest"><b>Mon test</b></a>
    Et j'ai retesté... AVEC SUCCES !!! 8)

    Le problème vient donc du fait que XMLRad rajoute un "/" à l'URL qu'il stocke dans les cookies sans vérifier s'il n'est pas déjà présent...
    Ce "/" présent dans l'alias pourrit donc le comportement de l'appli dès que l'on utilise les cookies...

    Voila, en espérant que cette petite solution épargnera à d'autres de perdre le temps que j'ai passé à comprendre l'origine du pb...

    Bon dév. et bon week-end,

    Philippe.
    Philippe.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut Cookies...
    Alors alors...

    Un truc important, c'est que l'alias n'a rien à voir du tout dans la gestion des cookies. ce n'est pas cette valeur là qui est prise pour écrire le path du cookie.
    Typiquement, Delos SI utilise massivement les cookies et les alias ont tous un / final. la technique est donc rodée et il n'y a pas de problèmes là dessus.
    La recommendation de l'éditeur à ce sujet est de mettre un / à la fin des alias...

    Donc, il faut chercher une solution ailleurs : en regardant le code du Framework de plus près (en particuliers, XMLGram.pas Assign.DoProcess et XMLUtils.pas TXMLRequest.SetCookies et AddCookie), on voit que le Framework prend la valeur des InitParams XMLC_CookiesPath. Si celle-ci est blanche, alors le Framework prend la valeur du Context Request.URL. Jamais il n'est fait mention des Aliases.

    Je pense plutot que le problème du double slash "//" vient plutot d'une des urls de ta cinématique de login, qui était appellé avec {/document/Aliases/ProjectDLL}/Action, d'où la présence d'un second slash dans le Request.URL. Je pense qu'une seule des actions etait invoquée avec un double slash, ce qui ecrivait dans le cookie la mauvaise valeur, et provoquant donc l'erreur que tu décris...

    Ta correction t'a certainement demandé pas mal de boulot pour mettre à jour toutes les urls de ton application, alors que je pense qu'il suffisait de rechercher ton alias suivi d'un / supplémentaire.[/b]

    Pour le paramètrage XMLC_CookiesPath, c'est la technique recommandée par l'éditeur pour la gestion du path des cookies. Ce paramètre est apparu avec les alias partagés pour tous les projets (/ProjectsBin/MonProj/MonProj.dll). Le XMLC_CookiesPath permet alors de spécifier le path correctement dans ce cas là, et surtout de partager un meme cookie pour différentes applications partageant un meme alias IIS commun (par exemple, 2 projets dans l'alias ProjectBin ont chacun leur propre répertoire Proj1 et Proj2. Par défaut, ils n'auront pas le meme CookiesPath et donc chacun aura son propre cookie. On peut alors assigner le XMLC_CookiePath à l'alias commun /ProjectBin pour partager le cookie pour les 2 applications et partager ainsi, par exemple, les informations de login de l'utilisateur).

    En résumé (faut que j'arrete les réponses de 3km ) :

    - un / à la fin de chaque Alias (recommendation editeur)
    - attention aux urls de l'appli : toujours utilisé l'alias suivi du nom du XMLService, sans / entre les deux
    - utilisation du XMLC_CookiesPath pour forcer le bon path à tous les coups

    Damned... C'est compliqué, ces histoires de ptits gateaux
    Nicolas

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour Nicolas,

    Effectivement, une recherche dans l'ancien projet montre que j'ai placé un "slash" dans une URL de l''appli, juste lors de la validation de la fiche de connexion !
    Si seulement ce "//" était apparu dans la ligne Edit de la fenêtre du navigateur, j'aurais pu remonter à l'origine du pb plutot...

    Et comme les navigateurs (ou les serveurs web) ne semblent pas génés par des "slash" multiples...

    Enfin, merci pour tes conseils toujours avisé !

    Bon weekend,
    Philippe.
    Philippe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Cookies] lorsque les cookie sont désactiver
    Par Death83 dans le forum Langage
    Réponses: 5
    Dernier message: 16/03/2006, 21h02
  2. [Struts]Interdire les cookies
    Par yush dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/02/2006, 13h11
  3. [Cookies] Détecter les cookies
    Par kot dans le forum Langage
    Réponses: 9
    Dernier message: 11/10/2005, 10h40
  4. les cookies
    Par philippe123 dans le forum ASP
    Réponses: 15
    Dernier message: 06/08/2005, 10h39
  5. Les cookies 3° !!!
    Par Ph. B. dans le forum XMLRAD
    Réponses: 6
    Dernier message: 28/01/2003, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo