webview收不到服务端的cookie

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webview收不到服务端的cookie相关的知识,希望对你有一定的参考价值。

参考技术A

昨天项目中碰到了一个bug,我们的客户端webview加载了我们的一个新闻详情页,在详情页里面发表一条评论,但是刷新页面后,刚才发表的评论却没有显示在评论列表里。

第一直觉,用其他的浏览器试试这一流程,发现没有问题。

这就奇怪了,难道是webview的设置有问题吗?但是因为不知道新闻评论这个功能的前端后端逻辑,随便修改webview的设置只能是盲人摸象,乱改一通,就算改好了可能也不知道为什么这样改就可以了。

本着科(zhuang)学(bi)的精(yu)神(wang),我先仔细想了想几个可能导致bug的疑点:

一开始以为使用的缓存页面,所以没有刷出来评论,可用fiddler抓包发现2个现象:

抓包可以说明两件事:

所以找了下后端的开发,了解了下评论逻辑。上传的评论一般都需要审核(人工审核),但是为了能在审核之前让用户可以马上看到自己刚发表的评论(防止以为是个bug),所以在服务端把刚评论的message种到了cookie里面,只要拿到cookie就可以显示出评论了。

然而抓包过程中,并没有发现服务端发送任何cookie,查了很久,终于发现最终的原因:

在Android 4.4及以下的系统,webview是默认接收第三方cookie的。但是,从android 5.0开始,webview默认是不接受第三方cookie的。

我们的服务端和页面刚好不在同一个域里面,而我的测试机是android 6.0的,所以导致接受不到cookie。
既然知道了根源,也就好解决了,接收第三方cookie的开关是:

另外,注意到第一个参数是webview,说明这个设置不是全局的,这一点android官网也做了说明

所以, 如果新建了一个webview,这个webview默认还是不接收第三方cookie的,这点要特别注意!

感谢您的耐心阅读,以上如果有错误的地方或者理解有失偏颇,请留言指正,谢谢~~

以上是关于webview收不到服务端的cookie的主要内容,如果未能解决你的问题,请参考以下文章

BIO模式下实现单发单收多发多收接受多个客户端的练习

jboss Marshalling, 服务端收不到消息

我的手机调用HMS Push Kit服务端API后收不到任何消息。 SDK版本为4.0.3.300

跨域后cookie怎么不能传递到客户端的浏览器

Android的cookie的接收和发送

极光推送服务器端向ios端推送消息需要设置哪些参数