问题
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;
回答1:
Use this code to delete Cookies from Chromium Version CEF3:
Use c_WB_ClearCookies for deleating all Cookies
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;
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;
来源:https://stackoverflow.com/questions/18493820/clear-cookies-in-tchromium