清除TChromium中的Cookie
如何清除 CEF3.1547 中的cookie我尝试了以下解决方案,但是这样做没有。 Cookies仍然存在。有没有比这更好的解决方案了?
How to clear cookies in CEF3.1547 I have tried the following solution however this simply does nothing. Cookies are still present. Is there a better solution than this?
procedure TForm1.Button1Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
begin
// login to site
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
);
// visit the site again to see if cookies cleared..
end;
使用以下代码从Chromium版本CEF3中删除Cookies:
Use this code to delete Cookies from Chromium Version CEF3:
使用c_WB_ClearCookies删除所有Cookie
Use c_WB_ClearCookies for deleating all Cookies
使用c_WB_Clear_url_Cookies删除仅特定于
的所有Cookie这样的网址-> c_WB_Clear_url_Cookies(' http://google.com ','cookie_name');
Use c_WB_Clear_url_Cookies for deleating all Cookies only from one speceally Url like this -> c_WB_Clear_url_Cookies('http://google.com','cookie_name');
type
CefTask = class(TCefTaskOwn)
procedure Execute; override;
public
var url,cookieName: ustring;
constructor create; virtual;
end;
constructor CefTask.create;
begin
inherited create;
url := '';
cookieName := '';
end;
procedure CefTask.Execute;
var CookieManager: ICefCookieManager;
begin
CookieManager := TCefCookieManagerRef.Global;
CookieManager.DeleteCookies(url,cookieName);
end;
procedure c_WB_ClearCookies;
var Task: CefTask;
begin
Task := CefTask.Create;
CefPostTask(TID_IO, Task);
end;
// c_WB_Clear_url_Cookies('http://google.com','cookie_name');
procedure c_WB_Clear_url_Cookies(c_url,c_cookieName: ustring);
var Task: CefTask;
begin
Task := CefTask.Create;
Task.url := c_url;
Task.cookieName := c_cookieName;
CefPostTask(TID_IO, Task);
end;
要列出所有cookie以获取cookieName,请使用Procedure list_all_cookies
For list all Cookies to get the cookieName use Procedure list_all_cookies
procedure pausek;
var M: TMsg;
begin
while PeekMessage(M, 0, 0, 0, pm_Remove) do
begin
TranslateMessage(M);
DispatchMessage(M);
end;
end;
procedure pause(i:longint);
var j : nativeint;
begin
for j := 1 to i do
begin
pausek;
sleep(100);
end;
end;
procedure list_all_cookies;
var CookieManager: ICefCookieManager;
cookie_list : string;
const lf = chr(13) + chr(10);
begin
cookie_list := '';
CookieManager := TCefCookieManagerRef.Global;
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
cookie_list := cookie_list + inttostr(count) + ': ' + domain + ' - ' + name + ' - ' + value + ' - ' + path + lf;
if (count<total) then result := true;
end
);
pause(10);
ShowMessage(cookie_list);
end;