iOSDevLevelingUp
iOSDevLevelingUp copied to clipboard
对于 cookie 处理问题的几点反思
作者:陈祥龙 日期:2017.07.10
问题:
① cookie 过大导致 WKWebView 中的请求失败(400); ② 第三方账号绑定手机号后,会员页无法更新用户信息。
导致问题 ① 的原因:
- 在同步 Cookie Storage 中的 cookie 到 WKWebView 时,出现了重复 cookie 的现象 。
- 在 WKWebView 第一次调用 loadRequest 时,插入的 cookie 没有做域名限制,导致Cookie Storage 中所有的 cookie 都被添加到 header 中了。
导致问题 ② 的原因:
- 在同步 Cookie Storage 中的 cookie 到 WKWebView 时,由于本地 Cookie Storage 中的 cookie 的 domain (.yhouse.com)与 h5 中网络请求接口返回的同名 cookie 的 domain (yhouse.com)不一样,同名 cookie 没有被覆盖,导致出现了重复 cookie 的现象 。
影响:
为了补救这两个错误,补发了两个版本
反思:
- 为什么会出现这样的问题:
- 知识欠缺——对 cookie 的不了解,功课做得不够。比如说,不论是在原生发起 request 还是 web view 中,cookie 的大小都是有限制的,UIWebView 中所有的 cookie 都会被自动同步到 [NSHTTPCookieStorage sharedStorage],所以当手动 set cookie 时,一定要注意筛选掉自己不需要的 cookie,以及不同 domain 下的 cookie。
- 严谨性——对代码的理解程度,是否对自己所写每行代码的含义有所了解,并且知道哪里有坑
- 既然问题、错误总是会出现的,那么又该如何规避呢:
- 针对升级、改进的修改,最好要有降级处理的准备。比如说,这次出现的问题,如果提前做好了应急降级准备的话,后面也就不会匆匆忙忙赶着补发新版本
- 代码审核(Code Review)在一定程度上可以增加一些讨论,同时给代码提交者一定的督促力。
- 软件开发人员应该如何减少 bug 的产生?以及如何解决发现的 bug?
小结:
希望自己这次能够吸取教训,专注当下,功课要做足,考虑问题能够更全面。
在同步 Cookie Storage 中的 cookie 到 WKWebView 时,由于本地 Cookie Storage 中的 cookie 的 domain (.yhouse.com)与 h5 中网络请求接口返回的同名 cookie 的 domain (yhouse.com)不一样,同名 cookie 没有被覆盖,导致出现了重复 cookie 的现象 。
这个怎么处理的额?
@flyerlin 你解决了吗?我也遇到类似问题
实际上 .yhouse.com 作为cookie的域名才是合适的,Cookie storage会自动加 . 作为域名的前缀,目的是匹配此域名下的所有子域名