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的主要内容,如果未能解决你的问题,请参考以下文章