Delphi 如何清除嵌入式浏览器的缓存和cookie?

Delphi 如何清除嵌入式浏览器的缓存和cookie?,delphi,caching,cookies,tchromium,Delphi,Caching,Cookies,Tchromium,我用TChromium创建了一个浏览器。 TChromium是动态创建的。 Facebook访问(登录) 在流程结束时,组件将被销毁。 再次创建组件时会出现问题 他继续上一个会话(登录)。 我需要清理所有缓存和cookies。(强制注销) 在代码下面,我通过以下方式创建组件: var    Chromium: TChromium; begin    try      Chromium := TChromium.Create(nil);      Chromium.SetParentCompone

我用TChromium创建了一个浏览器。 TChromium是动态创建的。 Facebook访问(登录) 在流程结束时,组件将被销毁。 再次创建组件时会出现问题 他继续上一个会话(登录)。 我需要清理所有缓存和cookies。(强制注销)

在代码下面,我通过以下方式创建组件:

var
   Chromium: TChromium;
begin
   try
     Chromium := TChromium.Create(nil);
     Chromium.SetParentComponent(Form1);
     Chromium.Align := alClient;
     chromium.Browser.MainFrame.LoadUrl('www.facebook.com');
我销毁它,然后像这样释放内存:

FreeAndNil(Chromium)

我该怎么办?

DCEF1:

要删除DCEF1包装中的Cookie,在
ICefCookieManager
管理器界面中有
DeleteCookies
函数。但是,我尝试使用以下代码删除所有Cookie,但始终失败:

procedure TForm1.Button1Click(Sender: TObject);
var
  CookieManager: ICefCookieManager;
begin
  CookieManager := TCefCookieManagerRef.GetGlobalManager;
  if not CookieManager.DeleteCookies('', '') then
    ShowMessage('DeleteCookies failed!');
end;
幸运的是,有另一个选项可以使用此cookie管理器删除cookie。访问所有这些参数,并在visitor函数中为
deleteCookie
输出参数指定True。获取cookie manager时要小心,它是在您第一次导航到某个地方时创建的(
GetGlobalManager
类函数不安全,未正确处理以获得意外结果),因此请确保在导航后使用此代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  CookieManager: ICefCookieManager;
begin
  CookieManager := TCefCookieManagerRef.GetGlobalManager;
  CookieManager.VisitAllCookiesProc(
    function(const name, value, domain, path: ustring; secure, httponly,
      hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
      count, total: Integer; out deleteCookie: Boolean): Boolean
    begin
      deleteCookie := True;
      ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' +
        'deleted!');
    end
  );
end;
DCEF3

在DCEF3包装器中,您可以使用以下内容。归功于:


特拉玛:你的帮助对我的项目起到了决定性的作用。我很感谢分享你的经验

使用此代码解决了我的问题:

procedure TForm1.Button1Click(Sender: TObject);
var
  CookieManager: ICefCookieManager;
begin
  CookieManager := TCefCookieManagerRef.GetGlobalManager;
  CookieManager.VisitAllCookiesProc(
    function(const name, value, domain, path: ustring; secure, httponly,
      hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
      count, total: Integer; out deleteCookie: Boolean): Boolean
    begin
      deleteCookie := True;
      ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' +
        'deleted!');
    end
  );
end;

hug

ApplicationCacheDisabled:=true和PageCacheDisabled=true使用这些选项不好Hello@TLama!您使用的是什么版本的dcef?您好,我使用的是SVN最新版本之一,版本147。您可以从URL获取该版本,但您需要使用一些SVN客户端来获取它,类似或类似(例如SVN客户端)。否则你就得从服务器上下载所有的文件。你呢?我用SVN下载了源代码,但尚未测试。当你通知考试的时候。感谢您的帮助我很好奇是否也不需要清除缓存(除了cookies),但有些东西告诉我应该足够了。我已经用StackOverflow测试过了,效果很好。测试后请告诉我。谢谢
procedure TForm1.Button1Click(Sender: TObject);
var
  CookieManager: ICefCookieManager;
begin
  CookieManager := TCefCookieManagerRef.GetGlobalManager;
  CookieManager.VisitAllCookiesProc(
    function(const name, value, domain, path: ustring; secure, httponly,
      hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
      count, total: Integer; out deleteCookie: Boolean): Boolean
    begin
      deleteCookie := True;
      ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' +
        'deleted!');
    end
  );
end;