You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flutter WebView代理方法获取URL请求头数据?

解决webview_flutter获取请求头的问题

webview_flutter的navigationDelegate回调接收的NavigationRequest对象,本身就包含请求头信息,你可以直接用它来实现URL与请求头的组合判断逻辑。

具体修改实现

  1. 更新你的_interceptNavigation方法,参数替换为NavigationRequest,通过它获取URL和请求头:
NavigationDecision _interceptNavigation(NavigationRequest request) {
  final targetUrl = request.url;
  final requestHeaders = request.headers;

  // 按你的业务逻辑判断:比如匹配登录重定向URL
  if (targetUrl == "<你的登录重定向URL>") {
    // 检查请求头中的关键标识
    if (requestHeaders.containsKey("X-Auth-Success")) {
      final authToken = requestHeaders["X-Auth-Success"];
      // 执行移动端API调用、关闭WebView等操作
      _processAuthSuccess(authToken);
      return NavigationDecision.prevent; // 阻止页面继续加载
    }
  }

  return NavigationDecision.navigate; // 允许正常导航
}
  1. 关键注意点:
    • NavigationRequest仅捕获页面级导航请求(比如跳转新页面、刷新),页面内的AJAX、资源加载请求无法通过此方式拦截
    • 如果需要捕获所有网络请求(包括异步请求),需要依赖平台特定API:
      • Android端:通过AndroidWebViewController自定义WebViewClient,重写shouldInterceptRequest方法获取所有请求详情
      • iOS端:通过WKWebViewController设置WKNavigationDelegate,重写webView(_:decidePolicyFor:decisionHandler:)获取请求信息
    • 若你的登录成功标识在响应头而非请求头中,NavigationRequest无法获取,此时需要用平台端的响应拦截方法(比如Android的onReceivedHeaders、iOS的didReceive回调)

内容的提问来源于stack exchange,提问作者propstm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:41:03