iOSDevLevelingUp icon indicating copy to clipboard operation
iOSDevLevelingUp copied to clipboard

对于 cookie 处理问题的几点反思

Open ShannonChenCHN opened this issue 8 years ago • 4 comments

作者:陈祥龙 日期:2017.07.10

ShannonChenCHN avatar Jun 28 '17 07:06 ShannonChenCHN

问题:

① 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。
    • 严谨性——对代码的理解程度,是否对自己所写每行代码的含义有所了解,并且知道哪里有坑
  • 既然问题、错误总是会出现的,那么又该如何规避呢:

小结:

希望自己这次能够吸取教训,专注当下,功课要做足,考虑问题能够更全面。

ShannonChenCHN avatar Jul 10 '17 13:07 ShannonChenCHN

在同步 Cookie Storage 中的 cookie 到 WKWebView 时,由于本地 Cookie Storage 中的 cookie 的 domain (.yhouse.com)与 h5 中网络请求接口返回的同名 cookie 的 domain (yhouse.com)不一样,同名 cookie 没有被覆盖,导致出现了重复 cookie 的现象 。

这个怎么处理的额?

flyerlin avatar Apr 25 '19 01:04 flyerlin

@flyerlin 你解决了吗?我也遇到类似问题

kobe1941 avatar May 06 '20 07:05 kobe1941

实际上 .yhouse.com 作为cookie的域名才是合适的,Cookie storage会自动加 . 作为域名的前缀,目的是匹配此域名下的所有子域名

kobe1941 avatar May 10 '20 13:05 kobe1941