DCEF1:
DCEF1ラッパーのCookieを削除するには、マネージャーインターフェイスにDeleteCookies
機能があります。ICefCookieManager
ただし、次のコードを使用してすべての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関数でdeleteCookie
出力パラメーターにTrueを割り当てます。cookie managerの取得には注意してください。これは、最初にどこかにナビゲートしたときに作成されます(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ラッパーでは、次を使用できます。クレジットはEricSantosに送られます:
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;