阻止对特定域 CefSharp 的请求

Block requests to specific domain CefSharp

我有cefsharp ChromiumWebBrowser。例如,我正在打开 discord.com 网站,并在后台网站本身向 discordapp.com 发出请求。我如何阻止对 discordapp.com 域的请求?

我尝试使用自定义 IRequestHandler.OnBeforeBrowse,但它仅在打开网站时触发,而不是在网站发出请求时触发。

在 chrome 中我发现了这个:https://chrome.google.com/webstore/detail/http-request-blocker/eckpjmeijpoipmldfbckahppeonkoeko 并且工作正常,但不知道如何在 cefsharp 中做同样的事情。

解决方案:

public class CustomRequestHandler : CefSharp.Handler.RequestHandler
{
    protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
    {

        if (request.Url.Contains("discordapp"))
        {
            return new CustomResourceRequestHandler();
        }

        return null;
    }
}

public class CustomResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler
{
    protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
    {

        request.Url = "";
        request.Dispose();

        return CefReturnValue.Cancel;
    }
}
browser.RequestHandler = new CustomRequestHandler();