【WebView】关于Android WebView 的一些坑

整合一下部分处理方式:

WebView缓存问题:

webview 清除缓存的方式:https://blog.csdn.net/shuijianbaozi/article/details/79493880

Android清除webview登录状态:https://blog.csdn.net/ban_sibuhuo/article/details/86716191

Android WebView清空缓存: https://www.cnblogs.com/cuichen16/p/10785955.html

WebView在Android10以上出现的部分问题:

Android 11中 webview 携带header发送loadUrl,即:

binding.browserWebView.loadUrl(url, header);

若请求头中包含:Host 则会出现 net::ERR_INVALID_ARGUMENT 错误,特此记录一下

header.put("Host", "……"); // 如在WebView中使用,建议不设置这条记录。

 

关于WebView设置Cookie的大坑

String cookie = getNetUtil().getCookie();
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(url, cookie + ";path=/"); // 切记这里的 ";path=/"

如果这个 cookie 要在整个域名中使用 请加上 ;path=/ 

 

问题复现:

header.put("Cookie", cookie)
binding.browserWebView.loadUrl(url, header);

//或者这么写
cookieManager.setCookie(url, cookie);
binding.browserWebView.loadUrl(url);

该Cookie在 Cookie数据库中是下图格式

然后 如果你接下来的所有操作都是在  http://www.xxx.com/Mobile/rsbuild 中或者是在 http://www.xxx.com/Mobile/rsbuild/abc/…… 中 那么该 Cookie 应该是可以使用到的。

但是如果url改变成了 http://www.xxx.com/PC/ 那么恭喜你,WebView没有这个/PC这个作用域,就会出现下图的情况

所以请务必注意,如果需要携带cookie进行 WebView操作,请务必加上 cookie1=xxxxx;path=/ 

另外补充一点:

WebView 的 Cookie 缓存是在 /data/data/包名/app_webview/Default/Cookies(虽然它没有以.db结尾,但是它是一个sqlite)

设备版本:Android 11

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值