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

iOS端flutter_inappwebview与webview_flutter无法传递headers问题求助

iOS端Flutter WebView丢失自定义请求头问题解决方案

问题根因

iOS系统的WKWebView存在原生机制限制:自定义请求头仅会在首次主文档请求时携带,当页面出现301/302重定向、或页面内部发起跨域请求时,系统会自动丢弃Authorization这类敏感自定义头,Android端WebView无此限制因此运行正常,和你配置的ATS、embedded_views_preview参数无关。

针对 flutter_inappwebview 5.3.2 的修复方案

通过重定向拦截回调,每次跳转时手动重新携带请求头,避免丢失:

body: InAppWebView(
  initialUrlRequest: URLRequest(
    url: Uri.parse(url),
    headers: {'Authorization': 'Bearer ' + token},
  ),
  // 拦截服务器重定向请求,重写header后重新加载
  onReceivedServerRedirectForProvisionalNavigation: (controller, navigationAction) async {
    final redirectUrl = navigationAction.request.url;
    if (redirectUrl == null) {
      return NavigationActionPolicy.ALLOW;
    }
    // 取消原有跳转,手动加载新地址并携带header
    await controller.loadUrl(
      urlRequest: URLRequest(
        url: redirectUrl,
        headers: {'Authorization': 'Bearer ' + token},
      )
    );
    return NavigationActionPolicy.CANCEL;
  },
),

针对 webview_flutter 2.3.1 的修复方案

该版本的loadUrl方法在iOS端存在已知的header传递缺陷,优先推荐两种处理方式:

  1. 升级webview_flutter到3.0及以上版本,使用loadRequest方法发起请求:
body: WebView(
  javascriptMode: JavascriptMode.unrestricted,
  onWebViewCreated: (c) {
    c.loadRequest(
      Uri.parse(url),
      headers: {'Authorization': 'Bearer ' + token},
    );
  },
),
  1. 若不方便升级版本,可将WebViewController实例存储为State类的成员变量,添加导航拦截回调手动补全header:
body: WebView(
  javascriptMode: JavascriptMode.unrestricted,
  navigationDelegate: (NavigationRequest request) {
    if (request.url != url) {
      // 拦截所有非首次请求,重新加载并携带header
      webViewController.loadUrl(request.url, headers: {'Authorization': 'Bearer ' + token});
      return NavigationDecision.prevent;
    }
    return NavigationDecision.navigate;
  },
  onWebViewCreated: (c) {
    webViewController = c;
    c.loadUrl(
      url,
      headers: {'Authorization': 'Bearer ' + token},
    );
  },
),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:03