AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy10 Cookie weiterverwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Indy10 Cookie weiterverwenden

Ein Thema von SUIW · begonnen am 17. Jul 2008 · letzter Beitrag vom 20. Jul 2008
Antwort Antwort
SUIW

Registriert seit: 17. Jul 2008
14 Beiträge
 
#1

Indy10 Cookie weiterverwenden

  Alt 17. Jul 2008, 18:14
Hallo,

ich habe mittel idHttp ein Programm geschrieben, welches sich in einem Loginform anmeldet,
mit Indy 10 (idHttp+idCookieManager) funktioniert das auch super, nur sobald ich eine weitere
Seite mit idHttp aufrufe bin ich wieder ausgelogt weil der Cookie nicht mit übertragen wird.

Weis einer weiter?
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Indy10 Cookie weiterverwenden

  Alt 20. Jul 2008, 19:22
Hallo.

Mit Indy+Cookies habe ich noch nicht das vergnügen gehabt.

Zu erst einmal: Ich hoffe, du redest von "anderen" Seiten der selben Domain. Dass das Cookie von Domain 1 nicht an Domain 2 weitergegeben wird, ist selbstverständlich.

Ich gehe mal davon aus, dass du den Cookie als String vorliegen hast, oder?

Wenn du den Cookie hast, müsstest du ihn nur in das Request-Paket der nächsten HTTP-Anfrage miteinfließen lassen (willst du eine GET oder eine POST Anfrage stellen?)

Du kannst mit http://web-sniffer.net/ dir eine Seite mit Request+Response ansehen.

Rufe ich eine Seite auf, die ein Cookie erfordert, steht im Response sowas wie:

Code:
Set-Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; path=/
Du bekommst den Keks also, wenn du die Response-Variable 'Set-Cookie' einholst.

Akzeptiert der "Browser" (dein Programm) nun keine Cookies, ignoriert er diesen Teil und verfährt weiter ohne Cookies. Indy wird dem Programmierer sicherlich freistellen, ob er Cookies annimmt/weitergibt oder nicht, deswegen wird die Funktion sicherlich nicht automatisch durchgeführt.

Willst du das Cookie verwenden/annehmen. Musst du bei allen weiteren Seitenaufrufen folgendes in den Request eingehen lassen:

Code:
Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(Achtung: Wenn mehrere Cookies gesetzt, werden sie mit einem Strichpunkt und einem Leerzeichen (; ) voneinander getrennt.)

Dann hat das Script auf der Serverseite das Cookie erhalten (in diesem Falle die PHP-Sessionkennung).

Poste uns doch ein wenig Code, auch wenn du das Problem gelöst hast. Ist für andere Leute, die das selbe Problem haben, sicherlich wertvoll.

Gruß
blackdrake

//Edit: Schau dir aber nochmal die Parameterliste von Indy an. Vielleicht gibt es einen Boolean-Schalter, der das automatische Verwalten von Cookies für dich übernimmt. Dann sparst du dir vielleicht Arbeit mit den Request-Headeranalysen und den Response-Erweiterungen.
Daniel Marschall
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Indy10 Cookie weiterverwenden

  Alt 20. Jul 2008, 20:01
ich hatte mal das gleiche problem. der hat den cookie einfach nicht mitgesendet.
obwohl ich eigentlich davon ausgehen würde, dass der cookiemanager dafür
da is um das zu managen... aber naja... ich habe mir dann so geholfen:

Delphi-Quellcode:
procedure TChecker.NewCookieEvent(ASender: TObject;
  ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
  FCookieData.Values[ACookie.CookieName] := ACookie.Value;
end;

function TChecker.GetCookieString: String;
var i: integer;
begin
  for i:=0 to FCookieData.Count-1 do
    result := result+format('%s=%s;', [FCookieData.Names[i], FCookieData.ValueFromIndex[i]]);
end;


...

  FHTTP := TIdHTTP.Create(self);
  FHTTP.CookieManager := TIdCookieManager.Create;
  FHTTP.CookieManager.OnNewCookie := NewCookieEvent;
  FHTTP.AllowCookies := true;
  FHTTP.HandleRedirects := true;
  FCookieData := TStringList.Create;

...

  FHTTP.Request.CustomHeaders.Values['Cookie'] := GetCookieString;
  response := FHTTP.Get(url);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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