Управление / удаление файлов cookie рабочего WebView2

Я запускаю Edge WebView2 с загруженной страницей входа. Я хочу сделать автоматический вход.

Для этого мне нужно удалить текущие файлы cookie. Я не могу сделать это через js, потому что они httponly. Для бета-браузера Edge я написал простое расширение Chrome для удаления файлов cookie, но я не могу запустить расширение в WebView2 (или могу?).

Также я знаю, где находится файл cookie WebView2, но я не могу его изменить во время работы Webview.

Единственный способ сделать это в WebView - открыть DevTools, я удалил их на вкладке приложения.

Есть идеи, как удалить эти файлы cookie?


Я был бы признателен хотя бы за пример загрузки страницы WebView2 с настраиваемым заголовком (где я могу указать файлы cookie) в c ++.


person Йцуее Цукен    schedule 10.10.2020    source источник
comment
WebView2 еще не имеет полнофункционального API файлов cookie, но у них есть API инструментов разработчика, который можно использовать для выполнения команд инструментов разработки. На самом деле это рекомендуемый подход к удалению файлов cookie. Я постараюсь найти несколько ссылок и опубликовать ответ, если никто не сделает этого   -  person Human-Compiler    schedule 10.10.2020
comment
@ Human-Compiler. Если вы предоставите мне пример или хотя бы ссылку для изучения, я буду очень признателен. Кроме того, кажется, я видел похоже на то, о чем Вы говорите, был метод, называемый как ...calldevtoolsmethodasync или что-то в этом роде, но он был для C #   -  person Йцуее Цукен    schedule 10.10.2020
comment
Да, это API. Большинство, если не все, C # API также доступны как C ++ API. Если вы еще не видели его, у Microsoft есть репозиторий примеров браузера, который является хорошим источником для справки. - где они используют этот API для очистки всех файлов cookie (на которые я также ссылался в своем ответе). Есть открытый запрос на правильный API cookie, но на данный момент рекомендуется использовать API devtools.   -  person Human-Compiler    schedule 10.10.2020


Ответы (1)


Обновление: теперь есть официальный ICoreWebView2CookieManager, который можно использовать для управления файлами cookie. Microsoft документирует этот API чрезвычайно, поэтому лучше всего проверить их документацию.

С помощью этого нового API достаточно вызвать либо DeleteCookie для удаления одного файла cookie, DeleteCookies, чтобы удалить все файлы cookie из домена, либо DeleteAllCookies, чтобы очистить все файлы cookie в том же профиле.

(Исходный ответ сохраняется ниже)


WebView2 все еще находится в активной разработке и еще не имеет API файлов cookie, хотя это запрос что они знают.

В настоящее время рекомендуемый подход к очистке / удалению файлов cookie заключается в использовании _ 4_ и выпустите _5 _ команда. Это также то, что Microsoft демонстрирует в своем noreferrer удалить все файлы cookie. Использование DevTools API по-прежнему будет работать, даже если в приложении не включены инструменты разработки пользовательского интерфейса.

Параметры, передаваемые команде, должны быть в формате JSON, поэтому, если вы хотите удалить определенный файл cookie, используя _ 7_, вам нужно будет указать {"name":"<cookie name>;"} для удаления <cookie name>:

m_view->CallDevToolsProtocolMethod(L"Network.deleteCookies", L"{\"name\": \"<cookie name>\";}", nullptr);

Или же вы можете удалить все файлы cookie с помощью Network.clearBrowserCookies:

m_view->CallDevToolsProtocolMethod(L"Network.clearBrowserCookies", L"{}", nullptr);

Примечание. CallDevToolsProtocolMethod выдается асинхронно, поэтому, если вам может потребоваться указать аргумент обработчика, если вам нужно удалить cookie, прежде чем продолжить.

person Human-Compiler    schedule 10.10.2020