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 :
Tout fonctionnait à merveille si ce n'est que IIS envoit très souvent une erreur comme quoi la mémoire est insuffisante.
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); } }
J'ai donc décidé d'essayer de faire la même chose en 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
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")
Quelqu'un peut-il me mettre sur la voie de la solution svp?
Merci d'avance.
Partager