Отключение безопасности в 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
будет делать свое дело.