我正在构建一个应用程序,并希望使用HTML, CSS, &JS文件作为嵌入式资源,但仍然在WebView2组件中加载/引用它们。有什么好的(有效的)方法来做到这一点吗?
我已经看过SetVirtualHostNameToFolderMapping,但我不认为这适用于嵌入式资源。
对于WebView2,浏览器在一个单独的进程中运行,并且只有呈现的输出才会出现在您的窗口中。
最近所有的主流浏览器都朝着这个方向发展,不仅针对托管浏览器,而且针对普通的终端用户体验。进程分离提高了稳定性,并防止信息泄漏/损坏,否则可能导致各种攻击,如RowHammer和Spectre漏洞。
实际上,单个页面可以实现为一组进程,以隔离从不同域加载的脚本并防止XSS。
按照设计,浏览器进程不能直接访问进程中的数据。所以你必须钩到它的网络请求事件。
更多信息请阅读
- 在WebView2应用程序中使用本地内容
特别要注意
在
WebView2
控件中托管本地内容的另一种方式是依赖于WebResourceRequested
事件。当控件试图加载资源时触发此事件。您可以使用此事件拦截请求并提供本地内容,如网络请求的自定义管理中所述。
有一个名为覆盖响应的例子,主动替换它,允许您使用Stream
对象将内容返回给WebView2。