什么问题呢?

又是一个android独有的问题。
12306一直登陆不上,但是在某些手机上又可以。
检查请求数据,一个不查

什么原因呢?

在12306登陆的时候,会有这么个熟悉的验证码出现。

验证码及之后的交互时序图如下:

如上图,在打码完成后所发送的12306请求必须带上验证码下发的cookie A, 但实际上使用的cookie还是之前的cookie ,也就是说验证码图片下载时所下发的cookie没有存储到webview的cookieManager中。

来说说cookie

主要作用是:用户识别及状态管理,Web为了管理用户的状态会把一些数据临时写入到用户的计算机内。
上面的情况就是把用户的某一次登陆请求和前面所下发的验证码图片通过cookie来进行前后衔接。

最终原因

android5.0及以上版本 限制接受第三方cookie

如何解决?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {CookieManager cookieManager = CookieManager.getInstance();                  cookieManager.setAcceptThirdPartyCookies(mDelegate.mWebView, enable);
}

什么叫ThirdPartyCookies?

What is a (third-party) cookie?

A cookie is a small script placed on the hard drive of your computer by the server of a website that you visit. The cookie is placed there for the purpose of recognising your specific browser / computer combination, were you to return to the same site.

All cookies have an owner which tells you who the cookie belongs to. The owner is the domain specified in the cookie.

The word “party” refers to the domain as specified in cookie; the website that is placing the cookie. So, for example, if you visit widgets.com and the domain of the cookie placed on your computer is widgets.com, then this is a first-party cookie. If, however, you visit widgets.com and the cookie placed on your computer says stats-for-free.com, then this is a third-party cookie.

Opentracker provides services that allow the companies and websites to track their visitors with first-party cookies.

简单来说,每个cookie都对应有一个宿主,这个宿主就是set-cookie时候对应的域名,当你访问的是A域名页面,但是cookie的宿主是B域名。对A来说这个cookie就是ThirdPartyCookies. 阻止跨域访问也是为了安全起见。

参考:

Android WebView填坑记录
[Third-Party Cookies vs First-Party Cookies](http://www.opentracker.net/article/third-party-cookies-vs-first-party-cookies#Difference between first and third-party cookies)

【Webview相关问题】登陆失败之cookie陷阱相关推荐

  1. 微信小程序踩坑-Cookie登陆失败

    目录 1 问题描述 小程序成功登陆后,安卓用户预约操作时,偶尔会出现登陆异常情况. 2 登陆实现方案 后端Cookie校验用户登陆状态 3 排查过程 1)后台日志排查,用户Cookie无效 2)微信小 ...

  2. 登录失败 12306服务器不稳定,12306显示登陆失败43003怎么办-12306登录显示43003含义详解...

    12306登陆失败43003什么意思-登录显示43003啥意思是四季手游冰糖雪梨今天要给大家带来的内容,有些网友在12306的手机app上购票的时候总会遇到提示:操作失败43003的问题.那12306 ...

  3. 登录起凡是显示计算机拒绝无法连接,起凡名将录出现第三方登陆失败怎么办 解决方案一览...

    起凡名将录出现第三方登陆失败怎么办,起凡名将录是一款非常好玩的游戏,许多玩家被其优秀的内容和有趣的玩法所吸引.但是近日有小伙伴反应起凡名将录出现第三方登陆失败,小编这里整理了一些起凡名将录出现第三方登 ...

  4. CentOS 查看登陆成功和登陆失败日志

    查看日志命令 # 查看登陆成功日志 last last -f /var/log/wtmp# 查看登陆失败日志 lastb last -f /var/log/btmp last 命令: 功能说明:列出目 ...

  5. google登陆失败问题解决

    问题背景 最近(2021.09)使用google登陆总是失败,以前也经常碰到登陆失败的问题,但往往是测试环境服务器挂掉导致,因此一开始也想当然的又把原因归结于此,结果iOS登陆没问题.问题被抛给我,于 ...

  6. 贪婪洞窟2一直显示连接服务器失败,贪婪洞窟2登录失败怎么办 登陆失败解决方法介绍...

    贪婪洞窟2登录失败怎么办?最近很多小伙伴都遇到登录失败的情况,下面小编就来为大家带来相关的解决方法. 贪婪洞窟2登录失败怎么办? 我们需要先排查一下原因,然后根据不同情况出现的登录失败,找到对应的解决 ...

  7. 少年歌行游戏一直显示连接服务器,少年歌行出现第三方登陆失败怎么办 解决方案一览...

    少年歌行出现第三方登陆失败怎么办,少年歌行是一款非常好玩的游戏,许多玩家被其优秀的内容和有趣的玩法所吸引.但是近日有小伙伴反应少年歌行出现第三方登陆失败,小编这里整理了一些少年歌行出现第三方登陆失败的 ...

  8. ssh登陆失败,客户端吐出错误信息,是bash的锅?

    前段时间业务反映某类服务器上更新了 bash 之后,ssh 连上去偶发登陆失败,客户端吐出错误信息如下所示: 图 - 0 该版本 bash 为部门这边所定制,但是实现上与原生版并没有不同,那么这些错误 ...

  9. 三国杀充值登陆服务器响应超时,三国杀登录超时怎么办?登陆失败解决方法[多图]...

    三国杀登录超时怎么办?今日不止一个两个的玩家在登陆的时候,发现未知的错误,导致账号登陆补上去,这样一来自己也就无法进入到游戏当中去体验了.下面就为大家带来三国杀登陆失败解决方法. 最近三国杀迎来了重点 ...

最新文章

  1. java.lang.IllegalArgumentException: Path index does not start with a / character
  2. jQuery.validate使用必备
  3. 互联网1分钟 |1218
  4. 用 git 保存空目录
  5. 美国只有两样东西要比中国 贵,一个是智慧财产权,一个是人工
  6. java内存管理总结
  7. Twisted入门教程(9)
  8. 《C程序设计新思维》一第6章 玩转指针6.1 自动、静态和手工内存
  9. nginx中给目录增加密码保护实现程序
  10. 10g gtx 光纤通信测试_光纤通信optisystem实验
  11. 清除计算机用户缓存,如何在Windows 7中清除内存缓存,释放电脑空间?
  12. C++中begin、end、front、back函数的用法
  13. Sublime不支持GDK导致中文乱码(两种方法)
  14. c语言case后面,switch语句case后面的范围怎么写
  15. 使用Xamarin实现跨平台移动应用开发(转载)
  16. 管理故事216之025-山雀与知更鸟
  17. [论文阅读笔记30]关于pico抽取的研究-1(4篇文献)
  18. STM32学习心得十八:通用定时器基本原理及相关实验代码解读
  19. macOS 视频格式转换器 MacX Video Converter Pro
  20. (Python)从零开始,简单快速学机器仿人视觉Opencv---运用三:物体运动跟踪

热门文章

  1. 共享文件夹加密专家_文件加密软件哪家靠谱?
  2. sql语句求上四分位数_SAS和R中,非常规分位数的计算方法
  3. Web 开发学习笔记(1) --- 搭建你的第一个 Web Server
  4. SylixOS DSP upgrade命令解析
  5. 传统IT和新IT并行推进 EMC两条腿走路助力企业数字化转型
  6. Zookeeper的功能以及工作原理
  7. 十字消源码分享(基于libgdx开发)
  8. table相关的API
  9. dhcp snooping+IPSG的一些理解
  10. CentOS 7 安装部署 cassandra作为kairosdb的数据存储