分享

delphi中如何删除dcef3的cookie和缓存?

 delphi_笔记 2018-08-30

我们用以下代码打开网站

  1. var
  2. Chromium: TChromium;
  3. begin
  4. try
  5. Chromium := TChromium.Create(nil);
  6. Chromium.SetParentComponent(Form1);
  7. Chromium.Align := alClient;
  8. chromium.Browser.MainFrame.LoadUrl('www.');
  9. FreeAndNil(Chromium)
  10. end;

如何删除dcef3的cookie和缓存?请看以下代码

  1. type
  2. CefTask = class(TCefTaskOwn)
  3. procedure Execute; override;
  4. public
  5. var url,cookieName: ustring;
  6. constructor create; virtual;
  7. end;
  8. constructor CefTask.create;
  9. begin
  10. inherited create;
  11. url := '';
  12. cookieName := '';
  13. end;
  14. procedure CefTask.Execute;
  15. var CookieManager: ICefCookieManager;
  16. begin
  17. CookieManager := TCefCookieManagerRef.Global;
  18. CookieManager.DeleteCookies(url,cookieName);
  19. end;
  20. procedure c_WB_ClearCookies;
  21. var Task: CefTask;
  22. begin
  23. Task := CefTask.Create;
  24. CefPostTask(TID_IO, Task);
  25. end;
  26. // c_WB_Clear_url_Cookies('http://google.com','cookie_name');
  27. procedure c_WB_Clear_url_Cookies(c_url,c_cookieName: ustring);
  28. var Task: CefTask;
  29. begin
  30. Task := CefTask.Create;
  31. Task.url := c_url;
  32. Task.cookieName := c_cookieName;
  33. CefPostTask(TID_IO, Task);
  34. end;

整理自网站 https:///questions/12269587/how-do-i-clear-the-cache-and-cookies-for-an-embedded-chromium-browser

取得cookie并显示,如果需要删除cookie,把deleteCookie:= False改为deleteCookie:= True

  1. function VisitCookie (
  2. const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean;
  3. const creation, lastAccess, expires: TDateTime; count, total: Integer;
  4. out deleteCookie: Boolean): Boolean;
  5. begin
  6. deleteCookie:= False;
  7. MainForm.Memo1.Lines. Add (' cookie ' +inttostr (count) + ' / ' + inttostr (total));
  8. MainForm.Memo1.Lines. Add (' name ' +name);
  9. MainForm.Memo1.Lines. Add (' value ' +value);
  10. MainForm.Memo1.Lines. Add (' domain ' +domain);
  11. MainForm.Memo1.Lines. Add (' path ' +path);
  12. MainForm.Memo1.Lines. Add (' secure ' +BoolToStr (secure));
  13. MainForm.Memo1.Lines. Add (' httponly ' +BoolToStr (httponly));
  14. MainForm.Memo1.Lines. Add (' hasExpires ' +BoolToStr (hasExpires));
  15. MainForm.Memo1.Lines. Add (' creation ' +DateToStr (creation));
  16. MainForm.Memo1.Lines. Add (' lastAccess ' +DateToStr (lastAccess));
  17. MainForm.Memo1.Lines. Add (' expires ' +DateToStr (expires));
  18. MainForm.Memo1.Lines. Add ('--------------- ');
  19. Result:= True;
  20. end;
  21.  
  22. procedure TMainForm.btn2Click(Sender: TObject);
  23. var CookieManager: ICefCookieManager;
  24. begin
  25. CookieManager:= TCefCookieManagerRef.Global(nil);
  26. CookieManager.VisitAllCookiesProc (VisitCookie);
  27. end;
  28.  
  29. //这样写,我在delphi xe8中编译不过
  30. procedure TMainForm.Button1Click(Sender: TObject);
  31. var
  32. CookieManager: ICefCookieManager;
  33. begin
  34. CookieManager := TCefCookieManagerRef.Global(nil);
  35. CookieManager.VisitAllCookiesProc(
  36. function(const name, value, domain, path: ustring; secure, httponly,
  37. hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
  38. count, total: Integer; out deleteCookie: Boolean): Boolean
  39. begin
  40. deleteCookie := True;
  41. ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' +
  42. 'deleted!');
  43. end
  44. );
  45. end;

为网址设置单独的cookie文件

  1. CookieManager: ICefCookieManager;
  2.  
  3. FormCreate:
  4. begin
  5. CookiesPath := ExtractFilePath(Application.ExeName) + 'cookies/bnwin';
  6. CookieManager := TCefCookieManagerRef.Global(nil);
  7. CookieManager.SetStoragePath(CookiesPath, True, nil);
  8. Chromium1.Load('');
  9. end;
  10.  
  11. FormClose:
  12. begin
  13. CookieManager.FlushStore(nil);
  14. end

为指定的网站设置cookie

  1. var Fsuccess: Boolean;
  2. procedure SetCookieR(success: Boolean);
  3. begin
  4. Fsuccess := success;
  5. end;
  6.  
  7. procedure TMainForm.btn1Click(Sender: TObject);
  8. var CookieManager: ICefCookieManager;
  9. begin
  10. CookieManager := TCefCookieManagerRef.Global(nil);
  11. CookieManager.SetCookieProc('http://', 'TEST', 'supertest', '.', '/', False,False, True, now, now, StrToDateTime('2020-12-30'),SetCookieR);
  12. end;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多