![]() |
HTTPApp.TWebResponse und Cookies
Hallo zusammen,
ich fange gerade an, eine bestehende PHP-Webanwendung auf Delphi mit WebBroker umzustellen. Soll später eine ISAPI-DLL werden, derzeit zu Testzwecken noch eine Standalone-Exe. Momentan kämpfe ich noch mit den Cookies. Im WebModule1DefaultHandlerAction mache ich folgendes:
Delphi-Quellcode:
Dem SetCookieField gebe ich -1 als Expires mit, damit das Cookie nur so lange vorhanden ist, wie der Browser offen ist. Request.CookieFields.Count ist dann aber 0. Was mache ich da falsch?
if Request.PathInfo = '/Index.html' then begin
if Request.CookieFields.Count >0 then begin // ist immer 0 ShowMessage(Request.CookieFields.Text); end; LCookie := TStringList.Create; try LCookie.Add('MyApp=Test Cookies für Webserver'); LCookie.Add('SetAt=' + FormatDateTime('dd/mm/yyyy hh:mm', Now)); Response.SetCookieField(LCookie, 'localhost', '/', -1, False); PageProducer1.HTMLFile:= HtmlPath + Request.PathInfo; Response.Content :=PageProducer1.Content; finally FreeAndNil(LCookie); end; end else begin PageProducer1.HTMLFile:= HtmlPath + Request.PathInfo; Response.Content :=PageProducer1.Content; end; Wenn ich
Delphi-Quellcode:
mache, sehe ich das ShowMessage mit den Cookies. Dann müsste ich die Cookies nur wieder vom Browser entfernen können, wenn der User sich ausloggt. Aber wie geht das?
Response.SetCookieField(LCookie, 'localhost', '/', Now + 1, False);
|
AW: HTTPApp.TWebResponse und Cookies
Geht nicht so richtig oder höchstens per JS im Broser direkt. Das geilste ist ja, dass Cookies die nur während der aktuellen Session gelten sollen, von Chrome etc. nicht entsprechend behandelt werden. Mit anderern Worten: Den Bowser so abstellen, dass Chrome wirklich eine neue Session macht, ist kaum noch möglich. Keine Ahnung was die da geraucht haben und sich da nicht mehr daran halten. Firefox hat auch vor einiger Zeit mit diesem dummen Verhalten angefangen.
Übrigens würde ich dir empfehlen direkt mit IIS und ISAPI oder besser CGI-Exe zu testen. CGI.Exe ist übrigens nahezu genau so schnell wie ISAPI, weil IIS die Exe im Chache hält, nur wird da halt immer alles initialisiert und wenn man eine Session führen will ist das da etwas komplexer, aber dafür kann man ohne Stress die WebApp einfach neu kompilieren und fertig. Bei ISAPI ist das dann leider viel problematischer, da man da jeweils die ISAPI-DLL im IIS entladen muss, bevor man sie ersetzen kann. |
AW: HTTPApp.TWebResponse und Cookies
Zitat:
Aber wenn es mit der CGI-EXE genauso geht, wäre das auch eine Alternative. Ich habe ja jetzt das Problem, dass ich IIS immer anhalten und neustarten muss. Das würde sich ja dann erübrigen, wie du oben geschrieben hattest. Kann man die CGI-EXE genauso aufrufen, wie die ISAPI DLL? Kann man dann vielleicht auch noch Ausgaben erstellen, damit man für Tests sieht, was passiert? |
AW: HTTPApp.TWebResponse und Cookies
Zitat:
Oder anders gefragt: Was wäre das Pendant zu session_start(); und den $_SESSION['xxx'] Variablen von PHP. Einfach irgendwelche Werte als globale Variablen serverseitig in Delphi speichern ist wohl keine gute Idee, da ja jeder Seitenauruf einen eigenen Thread startet, wenn ich das richtig verstanden habe. Außerdem muss sich der Seitenaufruf ja mit einer Art Session-ID identifizieren. |
AW: HTTPApp.TWebResponse und Cookies
Zitat:
Ja die CGI-EXE kannst du gleich aufrufen, nur halt die exe und nicht die dll. webserver/app/deineapp.exe/... anstatt webserver/app/deineapp.dll/... Wenn du die exe oder dll nicht in der URL haben willst, müsstest du noch eine Umschreibregel im IIS definieren, die sowas macht: webserver/app/deineapp/... Zitat:
|
AW: HTTPApp.TWebResponse und Cookies
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz