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

Windows Forms Discussion :

C#, cookies et browser


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut C#, cookies et browser
    Bonjour,

    J'essaie dès qu'on clique sur un élément de ma winform, de me connecter à une page dont l'accès est protégé par mot de passe.

    Pour cela, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    CookieContainer cookieContainer = new CookieContainer();
     
                /*
                 * Envoie d'une requete de login et récupération du cookie
                 */
                HttpWebRequest req_Login = (HttpWebRequest)HttpWebRequest.Create(URL_Login);
                req_Login.CookieContainer = cookieContainer;
                req_Login.Method = "POST";
                req_Login.ContentType = "application/x-www-form-urlencoded";
                ASCIIEncoding encoding = new ASCIIEncoding();
                byte[] data = encoding.GetBytes("...");
                req_Login.ContentLength = data.Length;
     
                Stream stream = req_Login.GetRequestStream();
                stream.Write(data, 0, data.Length);
                stream.Close();
     
                HttpWebResponse rep_Login = (HttpWebResponse)req_Login.GetResponse();
     
                //rep_Login.Close();
     
                /*
                 * Accès à la page demandée
                 */
                string URL = UrlDomaine + ".../my_votes.asp";
     
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL);
                req.CookieContainer = cookieContainer;
                req.Method = "GET";
     
                HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
     
                ProcessStartInfo sInfo = new ProcessStartInfo(rep.ResponseUri.ToString());
                Process.Start(sInfo);
    Quand je debug mon applic, visiblement le cookie container est comme il doit être.
    Le problème se situerait donc au niveau du Process.Start...
    Comment puis-je faire pour lui passer le cookie?

    Merci d'avance.

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    et ca donne quoi ton truc. tu loggues l'utilisateur ou pas?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    et ca donne quoi ton truc. tu loggues l'utilisateur ou pas?
    D'après ce que je peux voir au sniffer, oui.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    alors c'est bon. où est le problème?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProcessStartInfo sInfo = new ProcessStartInfo(rep.ResponseUri.ToString());
    Process.Start(sInfo);
    Tout va bien jusque ces lignes de codes là...

    En fait je fais les requetes précedentes pour avoir le cookie qui me permet d'accéder aux pages du site sans me logguer.

    Le problème c'est que quand j'exécute le Process avec l'URL où il devrait aller, le cookie lui n'est pas transmis ce qui me donne dans le navigateur web la page de login.

    Comment puis-je passer le cookie ou du moins faire en sorte que IE ou autre puisse accéder à ce cookies et ainsi accéder directement à la page demandée?

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    bah c'est ce que je disais passe les données cryptées à ton adresse et c'est la page qui construit le cookie, loggue la personne et qui redirige vers la bonne page ensuite.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Il faudrait donc que je modifie le code de la page asp, c'est bien ca?

    Il n'y a pas moyen de le faire juste par l'application C#?

    Comment puis-je créer l'URL avec le cookie?

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    c'est ta page asp qui va récuperer en GET les bonnes infos pour construire le cookie.
    en fait il est vide ton cookie de toute facon dans le code que tu fournis.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Euh... non il n'est pas vide, il compte bel et bien les éléments qu'il doit contenir.

    Je le vois grâce au sniffer et au debugger.

    Je suis passé par la solution de InternetSetCookie... le problème et je viens de m'en rendre compte c'est qu'avec Firefox, ca passe pas évidemment...

    Je vais me renseigner pour ta solution, mais je ne sais pas si je saurai modifier le site.


    EDIT :
    c'est ta page asp qui va récuperer en GET les bonnes infos pour construire le cookie.
    C'est ce qu'elle fait déjà avec la requete de login, mais le cookie est créé dans le cookiecontainer...

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    comment il est rempli le cookie. tu fais un new et apres tu le passes à une propriété. donc pour moi il est vide.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Ben je sais pas trop, c'est ce que je me serais dit dans la thérorie, mais apparement le cookieContainer se remplit bien.

    Enfin de toutes facons j'ai abandonné cette façon de faire.

    Mais une nouvelle question se pose, afin que l'utilisateur puisse utiliser n'importe quel navigateur.

    J'ouvre un nouveau sujet : "C# requete POST qui s'ouvre dans un navigateur"

Discussions similaires

  1. C# - Transferer cookie d'un CookieContainer vers le browser
    Par kalikut dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 20/07/2014, 13h13
  2. [PHP 5.2] [Cookies] utilisation de différente session par browser
    Par DeeVoiD dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2009, 14h04
  3. Les cookies 3° !!!
    Par Ph. B. dans le forum XMLRAD
    Réponses: 6
    Dernier message: 28/01/2003, 18h13
  4. [XMLRAD] Cookies pour login
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 9
    Dernier message: 23/12/2002, 17h47
  5. Cherche composant Web Browser indépendant
    Par lancelot69 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/07/2002, 11h14

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