iOS 清理 cookies
在手机端开发 web 页面时,有时候我们可能需要删除一些 cookie 值。JS 删除 cookie 主要是将 cookie 的 expires 属性设置为一个早于当前时间的值。不过如果 cookie 是 HttpOnly 的话,表示这个 cookie 值不能通过非 HTTP 方式来访问,而无法通过 JS 来访问,document.cookie 获取不到,所以也无法通过 JS 来删除这样的 cookie 值。
不过除了通过 server 端来处理外,我们也可以借助 native 端来执行删除操作。iOS 端使用 NSHTTPCookie 对象来表示一个 cookie ,并通过 NSHTTPCookieStorage 来管理当前应用的所有 cookie,包括 HttpOnly/secure 类型的 cookie 。所有想要删除 cookie ,只需要依据给定的条件(如域、path等属性)来找出对应的 NSHTTPCookie 对象,并删除就行。以下代码是清空当前应用程序所有 cookie 的操作:
NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies;
for (NSHTTPCookie *cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
当然,如果要在 web 端触发操作,还需要提供 Hybrid 接口。