Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdCookiemanager Problem (https://www.delphipraxis.net/30505-idcookiemanager-problem.html)

endeffects 25. Sep 2004 18:45


IdCookiemanager Problem
 
Hallo,

ich hab ein kleines Problem mit dem IdCookieManager,
wenn ich mit folgendem code einen post request mache
und dann vom server weitergeleitet werde enthält der
folgende request leider nicht mehr das vom server gesetzte cookie

hat jemand eine idee wo das problem sein könnte?


Delphi-Quellcode:
var
  IdHTTP: TIdHTTP;
  IdCookieManager: TIdCookieManager;

  PostDataStream : TStringStream;
  ParamData : TStringStream;
begin
//init components
  IdHTTP:= TIdHTTP.Create(nil);
  IdCookieManager:= TIdCookieManager.Create(nil);
//settings
  IdHTTP.AllowCookies:= True;
  IdHTTP.CookieManager:= IdCookieManager;
  IdHTTP.HandleRedirects:= True;
  IdHTTP.ProxyParams.ProxyServer:= '127.0.0.1';
  IdHTTP.ProxyParams.ProxyPort:= 8888;
  IdHTTP.Request.Connection:= 'Keep-Alive';
  IdHTTP.Request.ContentType:= 'application/x-www-form-urlencoded';
  IdHTTP.Request.UserAgent:= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';

    PostDataStream := TStringStream.Create('');
    ParamData := TStringStream.Create('');
//Parameter sind 1 zu 1 aus dem Orginal Header übernommen
    ParamData.WriteString('.....');
//Url und alle anderen nötigen Headerinformationen sind stimmig
    try
      IdHTTP.Post(Url, ParamData, PostDataStream);
    finally
      ParamData.Free;
      PostDataStream.Free;
    end;

sakura 25. Sep 2004 18:56

Re: IdCookiemanager Problem
 
Wirst Du auch auf den gleichen Server (gleiche URL), gleichen Port weitergeleitet?

...:cat:...

endeffects 25. Sep 2004 19:23

Re: IdCookiemanager Problem
 
ich hab die header nun schon ein paar mal überprüft,
ich sehe da keinen gravierenden unterschied, außer
dem fehlenden cookie

die header schauen wie folgt aus:

orginal post header
Code:
POST /form.php?id=123 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, */*
Referer: [url]http://www.domain.de/login.php?id=123[/url]
Accept-Language: de,ar-kw;q=0.5
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: [url]www.domain.de[/url]
Content-Length: 65
Pragma: no-cache
die weiterleitung
Code:
GET /login.php?id=123 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/x-gsarcade-launch, */*
Referer: [url]http://www.domain.de/login.php?id=123[/url]
Accept-Language: de,ar-kw;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: [url]www.domain.de[/url]
Pragma: no-cache
Cookie: logincheck=113045511001
und nun meine beiden header:
Code:
POST /form.php?id=123 HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
Pragma: no-cache
Host: [url]www.domain.de[/url]
Accept: text/html, */*
Referer: [url]http://www.domain.de/login.php?id=123[/url]
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Code:
POST /login.php?id=123 HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
Pragma: no-cache
Host: [url]www.domain.de[/url]
Accept: text/html, */*
Referer: [url]http://www.ebesucher.de/login.php?id=123[/url]
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
mal abgesehn von dem cookie unterscheiden sich die header nur dadurch das
der zweite anstatt eines post ein get request ist, aber auch hier sollte
doch eigentlich das cookie übergeben werden

ich hab auch schon versucht HandleRedirects auf false zu setzen und den
Get request der weiterleitung selbst zu tätigen, da das cookie aus dem
ersten post request ja eigentlich im cookie manager enthalten sein müßte

leider ohne erfolg :(

endeffects 26. Sep 2004 08:45

Re: IdCookiemanager Problem
 
ich hab nun heut morgen noch ein wenig rumgespielt
und mir den inhalt des cookiemanagers ausgeben lassen:

Delphi-Quellcode:
Memo1.Text:=IdCookieManager1.CookieCollection.Items[0].CookieText;
das nötige vom server gesetzte cookie ist auf jeden fall
vorhanden, wird aber für die weiterleitung nicht genutzt

:wiejetzt:

kann mir jemand sagen wie ich das cookie nun in einen get oder
post request stricke?

Nisbo 16. Dez 2006 11:36

Re: IdCookiemanager Problem
 
@ endeffects

und hast du das Problem inzwischen schon gelöst ?
oder ist das immer noch ein Problem der Indys ?

endeffects 16. Dez 2006 11:41

Re: IdCookiemanager Problem
 
naja ich hab die cookies in diesem fall
selbst nochmal ausgelesen, nachdem ich die
automatische weiterleitung deaktiviert hatte,
um sie dann an die ziel url zu übergeben

ich muss dazu sagen das problem tritt relativ selten auf,
woran es genau liegt weiß ich allerdings bis heute nicht

Nisbo 16. Dez 2006 11:48

Re: IdCookiemanager Problem
 
mmm das ging ja schnell mit der antwort, definiere mal bitte selber nochmal neu ausgelesen

endeffects 16. Dez 2006 11:57

Re: IdCookiemanager Problem
 
naaa ich hab den cookiemanager nach den entsprechenden
cookies durchsucht und diese dann verwendet

ex: IdCookieManager1.CookieCollection.Items[0].CookieText;

Nisbo 16. Dez 2006 12:16

Re: IdCookiemanager Problem
 
ok IdCookieManager1.CookieCollection.Items[0].CookieText; gibt einen cookie aus nur wie willste das verwenden ? sorry aber der cookiemanager ist für mich ein böhmisches dorf, wurde hier viel nach gefragt aber nie vernünftig beantwortet

endeffects 16. Dez 2006 12:49

Re: IdCookiemanager Problem
 
naja wenn du weißt welches cookie du brauchst und du es dir aus
dem cookie manager geholt hast (String) kannst du dann wenn du
einen neuen http request formst diesen string verwenden.

Var
Cookie: String;
begin
...
Cookie:= IdCookieManager1.CookieCollection.Items[0].CookieText;
..
IdHTTP.Request.CustomHeaders.Add('Cookie:' + Cookie);
IdHTTP.Get('Http://....');

ungetestet - aber so in etwa sollte das aussehen


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz