2013-08-28 5 views
1

Как очистить файлы cookie в CEF3.1547 Я пробовал следующее решение, однако это просто ничего не делает. Cookies все еще присутствуют. Есть ли лучшее решение, чем это?Очистить файлы cookie в TChromium

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

Да. Там есть. Поддерживает ли менеджер файлов cookie в WACEF метод '' DeleteCookies' '(http://magpcss.org/ceforum/apidocs/projects/ (default) /CefCookieManager.html#DeleteCookies)? Код из вашего вопроса, который я написал для DCEF 1 (дата ['this post'] (http://stackoverflow.com/a/12272190/960757), была до того, как был выпущен проект' 'DCEF 3 '' (https: // code.google.com/p/dcef3/source/detail?r=3b2c3db37dd49d60105726e0160706e464b4df56)). В DCEF 1 «DeleteCookies» не работал для меня. Может быть, в этом WACEF будет. – TLama

+0

Добро пожаловать в переполнение стека. Есть лучший способ задать этот вопрос. Вместо того, чтобы спрашивать, есть ли лучшее решение, просто спросите, как удалить куки. Затем отправьте свой код как * ответ *. Вам не нужно спрашивать, есть ли лучшее решение. Если есть, кто-то другой опубликует это как еще один ответ, и люди смогут голосовать, по которой лучше. –

+0

@TLama 'delete_cookies' присутствует в WACEF. –

ответ

0

Используйте этот код, чтобы удалить Cookies из Chromium Версия CeF3:

Используйте c_WB_ClearCookies для deleating все куки

Используйте c_WB_Clear_url_Cookies для deleating все Cookies только от одного speceally Url как это -> 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; 

Для списка всех Cookies, чтобы получить использование cookieName Процедура 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; 
Смежные вопросы