gpt4 book ai didi

delphi - 如何为 Chromium 嵌入式浏览器的不同实例设置不同的 cookie

转载 作者:行者123 更新时间:2023-12-03 15:32:32 29 4
gpt4 key购买 nike

我正在开发一个需要多个嵌入式实例的应用程序,并且每个实例都使用不同的身份验证详细信息登录到同一外部站点。

我在Delphi中使用CEF(Chromium嵌入式框架),我有一个文件夹,我在其中存储了不同浏览器实例的cookie,所以我在第一个单元中有这段代码

     procedure TForm2.Button1Click(Sender: TObject);
begin

form33 := Tform3.Create(nil);

form33.Show;
end;

form33 创建时

    procedure TForm3.FormCreate(Sender: TObject);
var
CookieManager: ICefCookieManager;
folder: string;

begin

Randomize;

Chromium1.SetBrowserID(Random(1244));

folder := Randomtext(5);
if DirectoryExists(folder) = False then
MkDir(folder);

CookieManager := TCefCookieManagerRef.Global;
path := ExtractFilePath(Application.ExeName) + folder;

CookieManager.SetStoragePath(path, true);

end;

问题是,当我打开两个或多个 form33 实例时,我无法为每个 form33 中的每个浏览器拥有特定的 cookie ...

最佳答案

您应该通过TCefCookieManagerRef.New(Path)为每个实例创建一个新的管理器,并将返回的引用存储到表单的某个私有(private)字段中。然后,您需要将存储的引用返回到 OnGetCookieManager 事件方法的 Result 参数:

type
TForm1 = class(TForm)
Chromium1: TChromium;
procedure FormCreate(Sender: TObject);
procedure Chromium1GetCookieManager(Sender: TObject;
out Result: ICefCookieManager);
private
FCookieManager: ICefCookieManager2;
end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
FCookieManager := TCefCookieManagerRef.New('C:\UniquePathToTheCookieStorage');
end;

procedure TForm1.Chromium1GetCookieManager(Sender: TObject;
out Result: ICefCookieManager);
begin
Result := FCookieManager;
end;

关于delphi - 如何为 Chromium 嵌入式浏览器的不同实例设置不同的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983280/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com