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;

    }
Другие вопросы по тегам