You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TMS Web Core网站中用Delphi代码读写浏览器Cookie?

在TMS Web Core中使用Delphi读写Cookie

在TMS Web Core里操作Cookie有两种常用方式,一种是直接调用你已有的JavaScript函数,另一种是使用框架内置的组件,以下是具体实现:

一、调用现有JavaScript Cookie函数

如果你已经有了现成的JS读写Cookie逻辑,可以直接在Delphi代码中调用这些函数:

1. 注入JavaScript代码

先把你的JS函数嵌入到项目中,比如在窗体的创建事件里通过asm块注入:

procedure TForm1.WebFormCreate(Sender: TObject);
begin
  asm
    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=/";
    }
  end;
end;

2. 在Delphi中调用JS函数

封装Delphi函数来调用对应的JS逻辑:

// 读取Cookie
function GetCookie(const ACookieName: string): string;
begin
  asm
    result = getCookie(ACookieName);
  end;
end;

// 设置Cookie
procedure SetCookie(const ACookieName, AValue: string; AExpireMinutes: Integer);
begin
  asm
    setCookie(ACookieName, AValue, AExpireMinutes);
  end;
end;

调用示例

// 设置一个10分钟后过期的Cookie
SetCookie('username', 'JohnDoe', 10);

// 读取并显示Cookie值
ShowMessage('用户名Cookie:' + GetCookie('username'));

二、使用TMS Web Core内置组件

TMS Web Core提供了TWebCookie组件,无需手动编写JS即可完成Cookie操作:

1. 添加组件

从组件面板的TMS Web类别中拖放一个TWebCookie组件到窗体上。

2. 设置Cookie

procedure TForm1.btnSetCookieClick(Sender: TObject);
begin
  WebCookie1.Name := 'username';
  WebCookie1.Value := 'JohnDoe';
  // 设置10分钟后过期
  WebCookie1.Expires := Now + EncodeTime(0, 10, 0, 0);
  WebCookie1.Path := '/';
  WebCookie1.SameSite := ssStrict;
  WebCookie1.Save;
end;

3. 读取Cookie

procedure TForm1.btnGetCookieClick(Sender: TObject);
begin
  WebCookie1.Name := 'username';
  if WebCookie1.Load then
    ShowMessage('用户名Cookie:' + WebCookie1.Value)
  else
    ShowMessage('未找到该Cookie');
end;

批量获取所有Cookie

如果需要查看所有Cookie,可以使用WebCookieManager:

procedure TForm1.btnGetAllCookiesClick(Sender: TObject);
var
  Cookies: TStringList;
begin
  Cookies := TStringList.Create;
  try
    WebCookieManager.GetCookies(Cookies);
    Memo1.Lines.Assign(Cookies);
  finally
    Cookies.Free;
  end;
end;

内容的提问来源于stack exchange,提问作者Shaun Roselt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:10:22