AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebResponse.SetCookieField fehlt Support für "SameSite"
Thema durchsuchen
Ansicht
Themen-Optionen

TWebResponse.SetCookieField fehlt Support für "SameSite"

Ein Thema von Rolf Frei · begonnen am 7. Jan 2020 · letzter Beitrag vom 19. Apr 2021
 
Rolf Frei

Registriert seit: 19. Jun 2006
657 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TWebResponse.SetCookieField fehlt Support für "SameSite"

  Alt 7. Dez 2020, 18:48
Du kannst das so mache wie ich im Report gemeldet habe, nur ist das keine schöne Lösung, weil man da an den Originalsourcen herumbasteln muss. Leider ist der TCookie Code so unsauber programmiert, dass da garnichts virtual ist. Wäre da GetHeaderValue virtual, wäre es relativ einfach zu lösen gewesen, aber so wie es aktuell ist, kommt man nicht drummherum in den Quellsourcen von Delphi Anpassungen zu machen und eine eigegne TCookie Klasse zu verrweden. Direkt im TCookie kann man auch nichts anpasen, da das sonst zu inkompatiblen (Interface) Units führt.

Delphi-Quellcode:
unit RFWebAppCookie;

interface

uses
  HTTPApp;
  
type
  TRFCookie = class(HTTPApp.TCookie)
  private
    FSameSite: String;
  protected
    function GetNewHeaderValue: string;
  public
    property SameSite: String read FSameSite write FSameSite;
    property HeaderValue: string read GetNewHeaderValue;
  end;


implementation

uses
  SysUtils;

{ TRFCookie }

function TRFCookie.GetNewHeaderValue: string;
begin
  Result := Format('%s=%s; ', [HTTPEncode(Name), HTTPEncode(Value)]);
  if Domain <> 'then
    Result := Result + Format('domain=%s; ', [Domain]); { do not localize }
  if Path <> 'then
    Result := Result + Format('path=%s; ', [Path]); { do not localize }
  if Expires > -1 then
    Result := Result +
      Format(FormatDateTime('"expires="' + sDateFormat + ' "GMT; "', Expires), { do not localize }
        [DayOfWeekStr(Expires), MonthStr(Expires)]);
  if SameSite <> 'then
    Result := Result + 'SameSite=' + SameSite + '; ';
  if Secure then Result := Result + 'secure'; { do not localize }
  if Copy(Result, Length(Result) - 1, MaxInt) = '; then
    SetLength(Result, Length(Result) - 2);
end;

end.
An den Stellen in der Orignalsource wo TCookie verwendet wird muss nun diese neue Klasse benutzen. Weiss akteull nciht mehr genau wo und was ich da genau geändert habe. Müsste das zuerst neu zusammen suchen.
  Mit Zitat antworten Zitat
 


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 13:29 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