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

ASP Discussion :

WinHttpRequest, ASP et Cookies


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 WinHttpRequest, ASP et Cookies
    Bonjour,

    j'ai un petit problème avec une page de redirection...

    L'idée est que j'ai un logiciel C# qui doit accéder à une page (ASP) d'un site directement en étant loggué.

    J'avais donc commencé par faire une page intermédiaire en ASP.NET qui ressemble à ceci :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
        protected void Page_Load(object sender, EventArgs e)
        {
            UrlDomaine = "http://" + Request.Url.Host;
     
            Login(Request.QueryString["pseudo"], Request.QueryString["pass"]);
     
            CookieCollection cc = cookieContainer.GetCookies(new Uri(UrlDomaine));
     
            HttpCookie hc;
            foreach (Cookie c in cc)
            {
                hc = new HttpCookie(c.Name, c.Value);
                hc.Expires = c.Expires;
                hc.Domain = UrlDomaine;
     
                Response.Cookies.Add(hc);
            }
     
            /*
             * Ouverture de la page demandée
             */
            string pageDemandee = null;
            switch (Request.QueryString["action"])
            {
    						...
                case "recherche":
                    {
                        Response.Cookies.Add(new HttpCookie("from", "messenger"));
                        Response.Cookies.Add(new HttpCookie("age", Request.QueryString["age"]));
     
                        pageDemandee = "/search/result.asp";
     
                        break;
                    }
                default:
                    {
                        pageDemandee = "member.asp";
     
                        break;
                    }
            }
     
            Response.Cookies.Add(new HttpCookie("redirect", pageDemandee));
            Response.Redirect(UrlDomaine + "frameset.asp");
        }
     
        private void Login(string p_Pseudo, string p_Pass)
        {
            string URL_Login = UrlDomaine + "login.asp?log=ok";
     
            cookieContainer = new CookieContainer();
     
            HttpWebRequest req_Login = (HttpWebRequest)WebRequest.Create(URL_Login);
            req_Login.CookieContainer = cookieContainer;
            req_Login.Method = "POST";
            req_Login.AllowAutoRedirect = true;
            req_Login.ContentType = "application/x-www-form-urlencoded";
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] data = encoding.GetBytes("pseudo=" + p_Pseudo + "&password=" + p_Pass);
            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();
            cookieContainer.Add(rep_Login.Cookies);
        }
    }
    Tout fonctionnait à merveille si ce n'est que IIS envoit très souvent une erreur comme quoi la mémoire est insuffisante.
    J'ai donc décidé d'essayer de faire la même chose en ASP...

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    '********************************************************************************
    '	Déclaration et initialisation des variables
    '********************************************************************************
    	Const WinHttpRequest_EnableRedirects = 6
     
    	domaine = "http://..."
    	urlLogin = domaine & "login.asp?log=ok"
    	dataLogin = "pseudo=" & Request.QueryString("pseudo") & "password=" & Request.QueryString("pass")
    	urlPage = domaine & "frameset.asp"
     
     
    '********************************************************************************
    '	Création et exécution du login afin de récupérer le cookie contenant la session
    '********************************************************************************
    	set winHttpRequest = server.CreateObject("WinHttp.WinHttpRequest.5.1")
     
    	winHttpRequest.open "POST", urlLogin, true
    	winHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    	winHttpRequest.Option(WinHttpRequest_EnableRedirects) = false
    	winHttpRequest.send dataLogin
    	winHttpRequest.waitForResponse 5000      	
     
     
    '********************************************************************************
    '	Récupération et traitement des cookies
    '********************************************************************************
    	httpHeaders = winHttpRequest.getAllResponseHeaders()
     
    	header = split(httpHeaders, "Set-Cookie: ")
        for cc = 1 to ubound(header)	
            theCookie = left(header(cc), instr(header(cc), "path=/")-2)
    		theCookie_Name = left(theCookie, instr(theCookie, "=")-1)
    		theCookie_Value = mid(theCookie, instr(theCookie, "=")+1, instr(theCookie, ";")-1 - instr(theCookie, "="))
    		%> <br /><br /> 
    		header(cc) : <%=header(cc)%> <br />
    		theCookie : <%=theCookie%> <br />
    		---
    		instr(theCookie, "=") : <%=instr(theCookie, "=")%><br />
    		instr(theCookie, ";") : <%=instr(theCookie, ";")%><br />
    		---
    		<li> Name : <%=theCookie_Name%> <br />
    		<li> Value : <%=theCookie_Value%> <br /> 
    		____________________
    		<%
     
    		'if instr(theCookie_Name, "ASPSESSIONID") = 0 then
    			Response.Cookies(theCookie_Name) = theCookie_Value
    		'end if
     
            myCookie = myCookie & " " & theCookie
        next
     
    	%> <br /><br /><br />myCookie : <%=myCookie%> <%
     
    	'Response.Cookies(" ") = trim(myCookie)
    	Response.Cookies(myCookie)
    	'Response.AddHeader "Cookie", trim(myCookie)
     
    	Response.Redirect("http://.../frameset.asp?redirect=my_messages.asp")
    J'ai donc le code ci-dessus qui ne fonctionne pas... Il va bien rechercher le cookie mais je n'arrive pas à les renvoyer dans le Response.Redirect

    Quelqu'un peut-il me mettre sur la voie de la solution svp?

    Merci d'avance.

  2. #2
    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'est résolu.

    On ne sait jamais, si quelqu'un rencontrait un jour le problème.

    S'il y a des "_" dans les noms des cookies, il peut les transformer en %5F qui après redirection deviennent %255F...

    C'est juste ca... un petit coup de "replace" et c'est parti

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

Discussions similaires

  1. [c# 1.1]Cookies et asp net
    Par ChristopheOce dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/10/2006, 08h56
  2. [Cookies] interaction des sessions sous asp et php
    Par boss_gama dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2006, 10h26
  3. Session ASP bloquée sur IE (cookies?)
    Par yoyot dans le forum ASP
    Réponses: 5
    Dernier message: 15/06/2006, 20h41
  4. ASP COOKIES en local
    Par monsieur_junior dans le forum ASP
    Réponses: 15
    Dernier message: 20/02/2006, 12h24
  5. Gestion cookies ASP / javascript
    Par NeHuS dans le forum ASP
    Réponses: 2
    Dernier message: 17/01/2005, 16h41

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