【问题标题】:Intercept Webview Request Xaml拦截 Webview 请求 Xaml
【发布时间】:2016-12-29 12:08:10
【问题描述】:

我需要将自定义用户代理和身份验证令牌插入到从 webview 发出的所有请求中。是否可以拦截从 webview 发出的 HttpRequests?

【问题讨论】:

    标签: windows xaml webview win-universal-app


    【解决方案1】:

    在 UWP 中,我们应该能够使用 WebView.NavigateWithHttpRequestMessage 方法将 WebView 导航到带有 POST 请求和 HTTP 标头的 URI。

    WebView 中有一个NavigationStarting 事件,它发生在 WebView 导航到新内容之前。所以我们应该可以将WebViewNavigationStartingEventArgs.Cancel属性设置为true来取消导航。

    例如:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigateWithHeader(new Uri("http://www.whoishostingthis.com/tools/user-agent/"));
    }
    
    private void NavigateWithHeader(Uri uri)
    {
        var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
        string ua = "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";
        requestMsg.Headers.Add("User-Agent", ua);
        MyWebView.NavigateWithHttpRequestMessage(requestMsg);
        MyWebView.NavigationStarting += Wb_NavigationStarting;
    }
    
    private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
    {
        MyWebView.NavigationStarting -= Wb_NavigationStarting;
        args.Cancel = true;
        NavigateWithHeader(args.Uri);
    }
    

    【讨论】:

    • 是否也可以拦截从 Javascript 发出的请求。我想在 webview 中加载下面提到的内容。 javascript 将生成详细页面,但问题在于生成的 html 内容,在图像和 js 文件的 src 中未指定协议(http 或 https)。我想手动添加它以使页面正常工作
    • "
      "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2018-02-03
    • 1970-01-01
    • 2019-02-18
    • 2021-08-07
    • 2020-06-23
    • 2016-06-12
    相关资源
    最近更新 更多