Отключение безопасности в TEdgeBrowser

Я видел примеры на C#, где люди отключили безопасность (так что пользователю не нужно было нажимать продолжить при ошибках сертификата) в WebView2, изменив CoreWebView2EnvironmentOptions, но я не могу, хоть убей, понять, как сделать эквивалент с компонентом TEdgeBrowser в Delphi. Кому-нибудь удалось добиться этого в Delphi?

2 ответа

Есть некоторые проблемы с TEdgeBrowser, поставляемым с Delphi, и эти проблемы существуют даже в Delphi Alexandria. Наиболее очевидным из них является то, что он был задуман в самом начале WebView2 в 2020 году.

Модуль WebView2, поставляемый с Delphi, намного отстает по возможностям от модуля, созданного сегодня из последней версии WebView2.tlb. Кроме того, я обнаружил, что GUID для интерфейса ICoreWebView2EnvironmentOptions, который существует в модуле WebView2, который поставляется с Delphi, НЕВЕРНЫЙ. При сравнении этого GUID с GUID модуля WebView2, сгенерированного из последней библиотеки типов, я заметил, что они разные, и я считаю, что это ненормально.

Чтобы решить вашу проблему, вам нужно скопировать файл Vcl.Edge.pas в свой проект и изменить метод TCustomEdgeBrowser.InitializeWebView. Внутри него создайте экземпляр класса, реализующего интерфейс ICoreWebView2EnvironmentOptions. Вы можете скопировать существующее решение в "WebView4Delphi" (пример находится в TWVLoader.CreateEnvironment). Вам также потребуется использовать модуль uWVTypeLibrary, который содержит правильные идентификаторы GUID вместо исходного модуля, поставляемого с Delphi (Winapi.WebView2.pas) и уже содержащего набор исправлений, сделанных Сальвадором Диасом Фау.

Вот оно. Для меня это решение сработало. Я открываю свойство компонента, которое позволяет мне передавать дополнительные аргументы запуска в Edge, и там я просто передаю « --ignore-certificate-errors », и Edge игнорирует ошибки сертификата!

Если кто-то здесь задается вопросом, почему я пошел на все эти проблемы вместо использования WebView4Delphi, ответ прост: TEdgeBrowser FOR ME намного проще в использовании, так как он имеет только один компонент и один метод, который нужно выполнить, чтобы все работало как надо. . Если в будущем мне понадобится что-то еще из интерфейсов, я проконсультируюсь с WebView4Delphi и попытаюсь реализовать в своем TEdgeBrowser Frankenstein ;)

К сожалению, Delphi 11.1 по-прежнему не предлагает удобного способа управления CoreWebView2EnvironmentOptions.

Вместо этого вы можете сделать это, используя WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTSпеременная среды:

      SetEnvironmentVariable('WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS',
  '--ignore-certificate-errors');
EdgeBrowser.CreateWebView;

Примечание, --disable-web-securityне удалит предупреждения сертификата, но --ignore-certificate-errorsбудет делать свое дело.

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