Cookie
cookie对应的是域。
一、
在看项目中代码时,看到对于每次加载一个 webView或 wkwebview 页面,每次都初始化 cookie 和在 Requset 的请求头中加入了 cookie。便学习下 cookie 相关知识。
在我们项目中在每次初始化 webView或 wk 时同时执行一个 configCookie 方法。跟进发现是调用单利 NSHTTPCookieStorage 来设置 cookie。
NSHTTPCookieStorage中保存的对象是 NSHTTPCookie,NSHTTPCookie中对象相应的 domain 是域名, cookieName 是字典对应的 key 值, value 则是字典对应的 value。
二、
同时要理解到 cookie 是服务器生成的。客户端只能进行保存,或每次请求都加入保存的 cookie。
每次请求完,服务器给客户端返回的 response 中都包含服务器中的 cookie。我们可以对服务器给我们返回的 response 中的cookie 进行操作,可以保存在本地,可以更新 NSHTTPCookieStorage。
可以通过上图中的上中方法拿到 response 中的 cookie。
Safari 浏览器和iOS应用程序将永久cookie保存在Cookies.binarycookies文件中
参数 描述
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
永久cookie:如果服务器设置了Cookie失效时间expire ,sessionOnly:FALSE会被持久化到文件中,kill掉后系统自动保存,下次启动app会自动加载.binarycookies中的Cookies,以下是一条Cookie输出
会话cookie: 如果没设置Cookie失效时间expires:(null),sessionOnly:true,kill掉后系统不会自动保存Cookie,如果想持久化Cookie 模仿浏览器存住Cookie,使用NSUserDefaults存下即可,以下是一条Cookie输出
参考链接