经过WebView翻开网页时,WebView会在恳求头中主动添加x-requested-with
字段,字段值为应用的包名。
本文介绍怎么修正x-requested-with的值。
查看恳求头
为了便利调试,能够运用Chrome Inspect工具来调试WebView加载的网页。
- 装备WebView敞开调试形式,代码如下:
WebView.setWebContentsDebuggingEnabled(true)
- 手机敞开开发者形式,衔接电脑,运用Chrome浏览器或Edge浏览器,翻开Inspect网页。
// Chrome 浏览器
chrome://inspect/#devices
// Edge 浏览器
edge://inspect/#devices
- 挑选想要调试的网页,点击inspect。
- 在翻开的Inspect窗口中点击网络查看恳求头 。
修正x-requested-with
- 经过loadUrl修正
在加载网页时,装备恳求头进行修正,代码如下:
webview.loadUrl("https:///", mapOf(Pair("x-requested-with", "")))
效果如图:
经过loadUrl加载的链接
链接网页内部的其他恳求
能够看到,此方法只对经过loadUrl加载的链接收效,链接网页内部其他恳求的x-requested-with没有被修正。
- 经过获取包名方法修正
找到另一个解决方案,在Application
找到WebView获取包名的方法,修正返回值,代码如下:
class ExampleApplication : Application() {
override fun getPackageName(): String {
try {
val stackTrace = Thread.currentThread().stackTrace
for (item in stackTrace) {
if ("org.chromium.base.BuildInfo".equals(item.className, true)) {
if ("getAll".equals(item.methodName, true)) {
return ""
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
return super.getPackageName()
}
}
// 在manifest中装备自定义的application
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:name=".base.ExampleApplication"
.../>
</manifest>
效果如图:
经过这种方法,所有恳求的x-requested-with都会被修正。