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

我用TChromium创建了一个浏览器.
TChromium是动态创建的.
Facebook访问(登录)
在该过程结束时,该组件被销毁.
再次创建组件时会发生此问题
他继续上一次会议(登录).
我需要清理所有缓存和cookie. (强制注销)

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

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函数中将true指定给deleteCookie输出参数.小心获取cookie管理器,它是在你第一次导航时创建的(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包装器中,您可以使用以下内容.信用额度为Eric Santos

type
  CefTask = class(TCefTaskOwn)
    procedure Execute; override;
  end;

procedure CefTask.Execute;
var
  CookieManager: ICefCookieManager;
begin
  CookieManager := TCefCookieManagerRef.Global;
  CookieManager.DeleteCookies('','');
end;

procedure ClearCookies;
var
  Task: CefTask;
begin
  Task := CefTask.Create;
  CefPostTask(TID_IO,Task);
end;

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...