您的位置:首页 > 移动开发 > IOS开发

IOS-54-IOS开发中cookie的作用简介

2016-02-29 11:01 190 查看
一般在网页中用到cookie、session等机制。其实涉及到浏览器的一般都需要

1.SESSION与COOKIE区别:

  Session 将信息保存在服务器上.服务器在接受到唯一的SESSION_ID后,根据这个ID获取相关数据,然后将信息传递到客户端(浏览器).

  Cookie 是将所有信息以文本的形式存在本地文件,并由客户端(浏览器)进行管理与维护.

因为Session 数据存储在server端,所以远程client无法对数据进行修改;而Cookie存储在client本地,容易被获取和篡改.所以Session安全性较高.

2.cookie: 是一种远程客户端存储数据和跟踪识别用户的机制.是服务器临时存放数据在本地用户的一个文本文件.文本文件格式:”用户名@网站地址[数字].txt”

3.当前我开发的APP中,主要是用于域名、用户跟踪

iOS中存储cookie信息:

/**
*  手动添加3份cookies(登录后,服务端会传一份cookie,由于目前有4个domain需要用到该cookie,因此需要手动创建3份对应domain的cookie)
*  登录的domain为api.·····.com
*/
+ (void)addTELDSIdCookies {

//http://····.······.cn/····
NSArray *domainArr = @[kCMSApiDomain,kSMSApiDomain,kWxDomin];
NSHTTPCookie *TELDSIDCookie = [self TELDSIDCookie];
if (TELDSIDCookie) {
for (int i = 0; i < [domainArr count]; i++) {
NSMutableDictionary *propertiesDic = [NSMutableDictionary dictionary];
[propertiesDic setObject:domainArr[i] forKey:NSHTTPCookieDomain];
[propertiesDic setObject:TELDSIDCookie.name forKey:NSHTTPCookieName];
[propertiesDic setObject:TELDSIDCookie.value forKey:NSHTTPCookieValue];
[propertiesDic setObject:TELDSIDCookie.path forKey:NSHTTPCookiePath];
[propertiesDic setObject:@"0" forKey:NSHTTPCookieVersion];
NSHTTPCookie *newCookie = [NSHTTPCookie cookieWithProperties:propertiesDic];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:newCookie];
}
}

}

/**
*  清除所有TELDSIdCookies
*/
+ (void)deleteAllTELDSIdCookies {

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArr = [cookieStorage cookies];
[cookiesArr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSHTTPCookie *cookie = obj;
if ([cookie.name isEqualToString:kBaseCookieName]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}];
}
// 取TELDSID cookie
+ (NSHTTPCookie *)TELDSIDCookie {

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesArr = [cookieStorage cookies];
for (NSHTTPCookie *cookie in cookiesArr) {
if ([cookie.name isEqualToString:kBaseCookieName] && [cookie.domain isEqualToString:kBaseApiDomain]) {
return cookie;
}
}
return nil;
}


本周提交测试、有一些bug要改,这个月发正式版,希望尽快完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: