如何在WPF WebView2中禁用CORS

问题描述

我正在开发一个使用.Net5 / WPF显示WebView2的应用程序。
我想禁用CORS。
我已经安装了Chromium Edge Canary 86.0.607.0。
在Edge中,可以通过在快捷方式中添加以下参数来禁用CORS。

--disable-web-security --user-data-dir="C://Chrome dev session"

我也想禁用WebView2。

解决方法

我在这个论坛上得到了答案。抱歉,此网站是日语。
https://social.msdn.microsoft.com/Forums/ja-JP/9bac6d51-94eb-42c8-96f0-4081e9a4056d/wpf-webview2-cors-?forum=wpfja

它与下面的代码一起使用。
* 必须在WebView2.Source中指定URL之前进行设置。
请注意不要在Xaml端指定来源。

    /// <summary>
    /// WPF Window Constructor
    /// </summary>
    /// <param name="url">URL</param>
    public WebViewWindow(string url)
    {
        InitializeComponent();
        // async start
        Loaded += async (_,__) => await _Routine(url);
    }

    /// <summary>
    /// task
    /// </summary>
    /// <param name="url">URL</param>
    /// <returns>task</returns>
    async Task _Routine(string url)
    {
        var localPath = Environment.GetEnvironmentVariable("LocalAppData");
        var webviewPath = $@"{localPath}\Microsoft\Edge SxS\Application\86.0.608.0";
        var userPath = "C://Chrome dev session";
        
        // Argument setting to disable COAR
        var op = new CoreWebView2EnvironmentOptions("--disable-web-security");
        
        var env = await CoreWebView2Environment.CreateAsync(webviewPath,userPath,op);
        
        await webView.EnsureCoreWebView2Async(env);
        
        if (Uri.TryCreate(url,UriKind.RelativeOrAbsolute,out Uri? result))
        {
            webView.Source = result;
        }
    }
,

对于 WPF,在构造函数中调用以下代码

 async void InitializeAsync()
        {
            var op = new CoreWebView2EnvironmentOptions("--disable-web-security");
            var env = await CoreWebView2Environment.CreateAsync(null,null,op);
            await webView.EnsureCoreWebView2Async(env);
        }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...