Search code examples
delphicookiestms-web-core

Get/Set Browser Cookies with Delphi Code in a TMS Web Core Website


In JavaScript, it is pretty simple to work with Cookies. You get and set cookies via the document.cookie code.

Here's example JavaScript code that I've written to get and set Cookies:

function getCookie(cookie_name) {
    const name = cookie_name + "=";
    const decodedCookie = decodeURIComponent(document.cookie);
    const ca = decodedCookie.split(';');
    for(let i = 0; i <ca.length; i++) {
        let c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1);
        if (c.indexOf(name) == 0)
            return c.substring(name.length, c.length);
    }
    return "";
}

function setCookie(cookie_name, value, minutes) {
    let expires = "";
    if (minutes) {
        let date = new Date();
        date.setTime(date.getTime()+(minutes*60*1000));
        expires = "; expires="+date.toUTCString();
    }
    document.cookie = cookie_name + "=" + value + expires + ";SameSite=Strict; path=/";
}

How do I get and set cookies using Delphi in TMS Web Core?


Solution

  • You can get and set cookies using the TCookies class from the WEBLib.Cookies unit.

    Here are two functions I wrote for getting and setting cookies in pure Delphi code:

    uses WEBLib.Cookies, System.DateUtils;
    
    ...
    
    procedure SetCookie(cookie_name, value: String; minutes: UInt64);
    var
      Cookies: TCookies;
    begin
      Cookies := TCookies.Create;
      Try
        Cookies.Add(cookie_name,value, IncMinute(Now,minutes));
        Cookies.SetCookies;
      Finally
        Cookies.Free;
      End;
    end;
    
    function GetCookie(cookie_name: String): String;
    var
      Cookies: TCookies;
      Cookie: TCookie;
    begin
      Result := '';
      Cookies := TCookies.Create;
      Try
        Cookies.GetCookies;
        Cookie := Cookies.Find(cookie_name);
        if Assigned(Cookie) then
          Result := Cookie.Value;
      Finally
        Cookies.Free;
      End;
    end;