How to set different cookies for different instances of Chromium embedded browser

和自甴很熟 提交于 2019-12-06 05:11:58

问题


I'm working on an application that requires multiple embedded instances and each of this instance logins to the same external site with different authentication details.

I'm using CEF (Chromium embedded framework ) in Delphi , I have a folder that i stored the cookies on it for different instance of my browsers , So i have this code in the first unit

     procedure TForm2.Button1Click(Sender: TObject);
begin

  form33 := Tform3.Create(nil);

  form33.Show;
end;

when the form33 created

    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;

The problem is that when i open two or more of instances of the form33 , i can't have for each browser in each form33 a specific cookie ...


回答1:


You should create a new manager for each instance by TCefCookieManagerRef.New(Path) and store the returned reference into some private field of your form. Then you need to return the stored reference to the Result parameter of the OnGetCookieManager event method:

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;


来源:https://stackoverflow.com/questions/24983280/how-to-set-different-cookies-for-different-instances-of-chromium-embedded-browse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!