在WebView UWP中更改默认用户代理

问题描述 投票:6回答:1

我需要设置自定义UA并使用

httpRequestMessage.Headers.Add("User-Agent", "blahblah");
theWebView.NavigateWithHttpRequestMessage(httpRequestMessage);

但是,如果我点击页面上的任何链接,这个UA会删除并设置默认UA。

我发现同样的问题WebView - Define User-Agent on every request但也许它在1607年修复?

c# webview windows-store-apps win-universal-app uwp
1个回答
8
投票

WebView不是通用浏览器,它确实有一些现在不支持的“限制”。没有API可以设置每个请求中使用的默认User-Agent。作为一种解决方法,我们可以使用WebView.NavigationStarting eventWebView.NavigateWithHttpRequestMessage method在每个请求中设置User-Agent。

有关如何执行此操作的更多信息,请参阅this answer。这里的关键点是删除NavigationStarting事件的处理程序并取消原始请求中的导航,然后在NavigateWithHttpRequestMessage之后添加处理程序以确保NavigationStarting事件可以捕获下一个请求,如下所示:

WebView wb = new WebView();
wb.NavigationStarting += Wb_NavigationStarting;
...
private void NavigateWithHeader(Uri uri)
{
    var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
    requestMsg.Headers.Add("User-Agent", "blahblah");
    wb.NavigateWithHttpRequestMessage(requestMsg);

    wb.NavigationStarting += Wb_NavigationStarting;
}

private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
    wb.NavigationStarting -= Wb_NavigationStarting;
    args.Cancel = true;
    NavigateWithHeader(args.Uri);
}

此外,欢迎您对UserVoice投票,以分享您的反馈意见。

© www.soinside.com 2019 - 2024. All rights reserved.