Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi 10.3 SOAP - Cookies werden nicht gespeichert (https://www.delphipraxis.net/199282-delphi-10-3-soap-cookies-werden-nicht-gespeichert.html)

Crocotronic 11. Jan 2019 15:01

Delphi 10.3 SOAP - Cookies werden nicht gespeichert
 
Hallo zusammen,

seit Delphi Rio funktionieren sämtliche Anwendungen nicht mehr, die einen SOAP-Service konsumieren und dabei eine Session benötigen, die in Form eines Cookies gespeichert werden.
Die Aufforderungen in den jeweiligen HTTP-Responses, einen Cookie zu generieren (Set-Cookie), werden ignoriert und daher im INetCache ebenfalls nicht aufgeführt. Auch wenn der Cookie existiert (z.B. erzeugt von der alten kompilierten Software), wird er nicht verwendet.

Weiß jemand, was dort in den Tiefen der SOAP-Bibliothek geändert wurde?
Die Hierarchi bishin zum eigentlichen Client sieht folgendermaßen aus:
Code:
THTTPRIO -> THTTPReqResp -> THTTPClient
Dort ist die Eigenschaft "AllowCookies" standardmäßig auf true.

Vielen Dank für Eure Hilfe,
Grüße

Croco

Sergej_Molotov 14. Feb 2019 10:36

AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
 
Die haben anscheinend komplett den HTTP-Client getauscht.
Früher wurde mittels WinInet kommuniziert und jetzt wird in der Klasse THTTPReqResp aus der Unit Soap.SOAPHTTPTrans eine Instanz von THTTPClient verwendet.

Ich habe auch gerade das Problem, wenn man mit mehreren Soap-Services kommuniziert und die Authentifizierung mittels Cookie erfolgt ist. Da man für jeden Service eine eigenen HTTPRIO benötigt (war schon immer so) muss man das Cookie von einem RIO zum nächsten übermitteln. Das war früher anders!!!

Mein Ansatz, den ich gerade versuche zu implementieren, ist, dass ich über den Event "HTTPRIOLoginHTTPWebNode1BeforePost" mir den CookieManager vom Service / HTTPRIO, der für das Login verantworlich ist, abgreife und das Cookie dem anderen RIO unterzuschieben.

Falls ich es hinbekomme, packe ich Beispiel-Code dabei

Sergej_Molotov 14. Feb 2019 10:48

AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
 
Delphi-Quellcode:
  TForm1 = class(TForm)
    HTTPRIOLogin: THTTPRIO;
    HTTPRIOPicture: THTTPRIO;
    procedure HTTPRIOLoginHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);
    procedure HTTPRIOPictureHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FLogin:        SoapLoginService;
    FPicture:      SoapPictureService;
    FCookieManager: TCookieManager; // im Create oder Show auf nil setzen
  public
    { Public-Deklarationen }
  end;

procedure TForm1.HTTPRIOLoginHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);
begin
  if FCookieManager = nil then
    FCookieManager := Client.CookieManager;
end;

procedure TForm1.HTTPRIOPictureHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);
var
  aCookie: TCookie;
begin

  for aCookie in FCookieManager.Cookies do
  begin
    if aCookie.Name = 'JSESSIONID' then
      Client.CookieManager.AddServerCookie(aCookie, TUri.Create(HTTPRIOPicture.URL));
  end;
end;

Crocotronic 2. Apr 2019 14:30

AW: Delphi 10.3 SOAP - Cookies werden nicht gespeichert
 
Gibt es hier Neuigkeiten, ob das Problem behoben wurde?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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