iOS中的cookie简介和其中的坑

来源:互联网 发布:韩国美女直播间软件 编辑:程序博客网 时间:2024/06/01 09:17

1. 什么是cookie?

Cookie指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。定义于RFC2109。为网景公司的前雇员LouMontulli在1993年3月所发明。

在使用的时候,用户第一次登陆或者第一次和服务器连接,将会从服务器获取一次cookie。然后终端可能再给cookie中增加几个字段,然后存储在本地。

然后每次访问网页的时候,客户端会把Cookie发送给服务器。

实际上,在iOS系统中,cookie的数据形式是字典NSDictionary,一个键值对应一个参数。


2.iOS中对cookie的操作

iOS提供了两个类,用于操作cookie:

1. NSHTTPCookie  2. NSHTTPCookieStorage

NSHTTPCookieStorage是一个单例,存储管理所有的cookie。一个NSHTTPCookie对象是一个cookie。可以理解为NSHTTPCookieStorage管理的目标就是NSHTTPCookie。

关于这两个类的具体讲义见:点击打开链接

还是比较详细的。

下面上几段示例代码:

存储cookie:

[[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:[NSHTTPCookie cookieWithProperties:properties]];
properties是一个字典。

获取cookie:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];for (NSHTTPCookie *cookie in cookies) {    NSDictionary *dict = cookie.properties;    NSLog(@"%@",dict);}


清除cookie:

+(void) deleteCookie{    NSHTTPCookie *cookie;    NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];    for (cookie in [cookieJar cookies])    {        [cookieJar deleteCookie:cookie];    }}

3.cookie使用时的一个坑

cookie的使用,是与本地时间有关系的,因为它有一个有效期的概念。

最近项目中发现手动设置手机时间后,app切换账户出现了一些问题。
然后在解决问题过程中发现,把手机时间手动向前设置(设置为前几天的某一天),微信和脉脉也出现了bug。
微信的朋友圈所有动态都显示1分钟前发布,脉脉则是刷不出新的动态。

查了很多资料,最终无解。
如果有哪位读者明白这个问题,请赐教!




1 0
原创粉丝点击