iOS中的cookie简介和其中的坑

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值