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

Android WebView发送空X-requested-with头时getPackageName异常问题

Android WebView修改X-Requested-With请求头失败:未找到org.chromium.base.BuildInfo调用栈的原因

问题描述

我尝试在Android WebView中发送空的X-requested-with请求头,参考其他帖子使用以下代码:

override fun getPackageName(): String {
    try {
        // Override the value passed as X-Requested-With in WebView requests
        val stackTrace = Thread.currentThread().stackTrace
        for (element in stackTrace) {
            if ("org.chromium.base.BuildInfo".equals(element.className, ignoreCase = true)) {
                if ("getAll".equals(element.methodName, ignoreCase = true)) {
                    return WebViewUtil.SPOOF_PACKAGE_NAME
                }
                break
            }
        }
    } catch (e: Exception) {
    }
    return super.getPackageName()
}

但问题在于调用getPackageName()的元素中从未出现org.chromium.base.BuildInfo。我使用的是Kotlin+Jetpack Compose环境下的标准WebView,已通过日志排查返回的元素,仍未找到该类。

可能的原因分析

  • WebView内核版本迭代导致调用逻辑变更
    不同Android版本搭载的WebView内核(基于Chrome的不同分支)可能已经重构了请求头生成逻辑。org.chromium.base.BuildInfo.getAll()这个调用路径可能在高版本WebView中被移除或替换,转而使用其他类/方法来获取用于填充X-Requested-With的包名信息,自然不会出现在调用栈中。

  • Jetpack Compose对WebView的封装影响调用栈上下文
    Compose中的WebView是通过AndroidView组件封装的系统WebView实例,其初始化、请求触发的生命周期流程与传统View体系下的WebView存在细微差异。这种封装可能改变了调用栈的层级或上下文,导致原本的栈追踪逻辑无法匹配到目标类。

  • R8代码混淆优化修改了类名
    如果你的项目开启了代码混淆(minifyEnabled true),R8编译器可能会对Chromium相关的系统类名进行混淆压缩,或者移除未被直接引用的代码分支。此时调用栈中的类名会变成混淆后的短标识,无法与硬编码的org.chromium.base.BuildInfo匹配。

  • WebView安全策略更新限制篡改路径
    谷歌为了提升WebView的安全性,可能限制了通过篡改getPackageName()来修改X-Requested-With的方式,直接调整了请求头的生成逻辑,不再依赖BuildInfo.getAll()这条调用链,导致你的栈追踪逻辑完全失效。

替代实现思路

如果需要修改X-Requested-With请求头,可以尝试以下更可靠的方案:

  • 重写WebViewClient的shouldInterceptRequest方法,拦截所有请求后手动修改请求头中的X-Requested-With字段,再重新构建请求。
  • 对于单次页面加载,可使用WebView.loadUrl(url, headers)重载方法,传入包含自定义X-Requested-With的Headers集合(注意该方法仅对当前loadUrl的请求生效,页面跳转后的请求不会自动继承)。
  • 针对API 21及以上版本,可结合WebSettings和反射(需谨慎使用)修改内部的请求头生成逻辑,但这种方式存在兼容性风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:25:10