栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > iOS

详解iOS App开发中Cookie的管理方法

iOS 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解iOS App开发中Cookie的管理方法

一、何为cookie

cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息。cookie中的字段与意义由服务端进行定义。例如,当用户在某个网站进行了登录操作后,服务端会将cookie信息返回给终端,终端会将这些信息进行保存,在下一次再次访问这个网站时,终端会将保存的cookie信息一并发送到服务端,服务端根据cookie信息是否有效来判断此用户是否可以自动登录。

二、iOS中进行cookie管理的两个类

iOS中进行HTTP网络请求cookie管理主要由两个类负责,一个类是NSHTTPcookieStorage类,一个是NSHTTPcookie类。

1.NSHTTPcookieStorage

NSHTTPcookieStorage类采用单例的设计模式,其中管理着所有HTTP请求的cookie信息,常用方法如下:

//获取单例对象
+ (NSHTTPcookieStorage *)sharedHTTPcookieStorage;
//所有cookie数据数组 其中存放NSHTTPcookie对象
@property (nullable , readonly, copy) NSArray *cookies;
//手动设置一条cookie数据
- (void)setcookie:(NSHTTPcookie *)cookie;
//删除某条cookie信息
- (void)deletecookie:(NSHTTPcookie *)cookie;
//删除某个时间后的所有cookie信息 iOS8后可用
- (nullable NSArray *)cookiesForURL:(NSURL *)URL;
//获取某个特定URL的所有cookie数据
- (void)removecookiesSinceDate:(NSDate *)date NS_AVAILABLE(10_10, 8_0);
//为某个特定的URL设置cookie
- (void)setcookies:(NSArray *)cookies forURL:(nullable NSURL *)URL maindocumentURL:(nullable NSURL *)maindocumentURL;
//cookie数据的接收协议

@property NSHTTPcookieAcceptPolicy cookieAcceptPolicy;
系统下面的两个通知与cookie管理有关:

//cookie数据的接收协议改变时发送的通知
FOUNDATION_EXPORT NSString * const NSHTTPcookieManagerAcceptPolicyChangedNotification;
//管理的cookie数据发生变化时发送的通知
FOUNDATION_EXPORT NSString * const NSHTTPcookieManagercookiesChangedNotification;

2.NSHTTPcookie

NSHTTPcookie是具体的HTTP请求cookie数据对象,其中属性方法如下:

//下面两个方法用于对象的创建和初始化 都是通过字典进行键值设置
- (nullable instancetype)initWithProperties:(NSDictionary *)properties;
+ (nullable NSHTTPcookie *)cookieWithProperties:(NSDictionary *)properties;
//返回cookie数据中可用于添加HTTP头字段的字典
+ (NSDictionary *)requestHeaderFieldsWithcookies:(NSArray *)cookies;
//从指定的响应头和URL地址中解析出cookie数据
+ (NSArray *)cookiesWithResponseHeaderFields:(NSDictionary *)headerFields forURL:(NSURL *)URL;
//cookie数据中的属性字典
@property (nullable, readonly, copy) NSDictionary *properties;
//请求响应的版本
@property (readonly) NSUInteger version;
//请求相应的名称
@property (readonly, copy) NSString *name;
//请求相应的值
@property (readonly, copy) NSString *value;
//过期时间
@property (nullable, readonly, copy) NSDate *expiresDate;
//请求的域名
@property (readonly, copy) NSString *domain;
//请求的路径
@property (readonly, copy) NSString *path;
//是否是安全传输
@property (readonly, getter=isSecure) BOOL secure;
//是否只发送HTTP的服务
@property (readonly, getter=isHTTPOnly) BOOL HTTPOnly;
//响应的文档
@property (nullable, readonly, copy) NSString *comment;
//相应的文档URL
@property (nullable, readonly, copy) NSURL *commentURL;
//服务端口列表
@property (nullable, readonly, copy) NSArray *portList;

三、清除cookie
清除所有的cookie 方法:

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; 
    if (url) { 
        NSArray *cookies = [[NSHTTPcookieStorage sharedHTTPcookieStorage] cookiesForURL:url]; 
        for (int i = 0; i < [cookies count]; i++) { 
            NSHTTPcookie *cookie = (NSHTTPcookie *)[cookies objectAtIndex:i]; 
            [[NSHTTPcookieStorage sharedHTTPcookieStorage] deletecookie:cookie]; 
             
        }  
  清除某一个特定的cookie方法:
NSArray * cookArray = [[NSHTTPcookieStorage sharedHTTPcookieStorage] cookiesForURL:[NSURL URLWithString:self.loadURL]]; NSString * successCode = @""; for (NSHTTPcookie*cookie in cookArray) { if ([cookie.name isEqualToString:@"cookiename"]) { [[NSHTTPcookieStorage sharedHTTPcookieStorage] deletecookie:cookie]; } } 

清除某一个url缓存的方法:
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:[NSURLRequest requestWithURL:url]]; 

清除所有缓存方法:       
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/167279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号