CefSharp Wpf, Session Cookie для нескольких экземпляров
Мне очень любопытно, есть ли возможность в CEF Sharp как-то изолировать каждый экземпляр браузера от других.
Я создаю 4 экземпляра браузера. При входе в систему экземпляров, сразу 3 других экземпляра также становятся зарегистрированными.
Можно ли как-то добиться в текущей версии, которую мы получили от Nuget?
2 ответа
Начиная с версии 2040, CEF теперь добавляет поддержку для полной изоляции хранилища и разрешений (кеш, куки, localStorage, разрешения доступа и т. Д.) В зависимости от контекста запроса. Это тоже сейчас в CEFSharp.
Чтобы убедиться, что ни одна сессия не пересекается между несколькими экземплярами, просто создайте новый объект RequestContextSettings, установите для PersistSessionCookies и / или PersistUserPreferences значение false и назначьте его браузеру при создании нового RequestContext - я не уверен, что установка их в false - полностью необходимо для нескольких случаев, может быть, кто-то еще может дать некоторую информацию об этом.
//usually ChromiumWebBrowser setup goes above this
RequestContextSettings requestContextSettings = new RequestContextSettings();
requestContextSettings.PersistSessionCookies = false;
requestContextSettings.PersistUserPreferences = false;
webBrowser.RequestContext = new RequestContext(requestContextSettings);
Это давало мне головную боль некоторое время, и это, кажется, наконец решило эту проблему.
Просто используйте этот код, он работает для меня.
public MainWindow()
{
CefSharp.CefSettings settings = new CefSharp.CefSettings();
settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
CefSharp.Cef.Initialize(settings);
InitializeComponent();
browser = new ChromiumWebBrowser("https://google.com/");
browser.BrowserSettings.ApplicationCache = CefSharp.CefState.Disabled;
}