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.