Warning: mysqli_query(): MySQL server has gone away in /www/wwwroot/www.jishudog.com/wp-includes/wp-db.php on line 2007

Warning: mysqli_query(): Error reading result set's header in /www/wwwroot/www.jishudog.com/wp-includes/wp-db.php on line 2007
iOS网络编程之七——本地用户凭证Cookie的应用 – 技术狗

iOS网络编程之七——本地用户凭证Cookie的应用

释放双眼,带上耳机,听听看~!

iOS网络编程之七——本地用户凭证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 , readonlycopyNSArray<NSHTTPCookie *> *cookies;
//手动设置一条Cookie数据
- (void)setCookie:(NSHTTPCookie *)cookie;
//删除某条Cookie信息
- (void)deleteCookie:(NSHTTPCookie *)cookie;
//删除某个时间后的所有Cookie信息 iOS8后可用
- (nullable NSArray<NSHTTPCookie *> *)cookiesForURL:(NSURL *)URL;
//获取某个特定URL的所有Cookie数据
- (void)removeCookiesSinceDate:(NSDate *)date NS_AVAILABLE(10_10, 8_0);
//为某个特定的URL设置Cookie
- (void)setCookies:(NSArray<NSHTTPCookie *> *)cookies forURL:(nullable NSURL *)URL mainDocumentURL:(nullable NSURL *)mainDocumentURL;
//Cookie数据的接收协议
/*
枚举如下:
typedef NS_ENUM(NSUInteger, NSHTTPCookieAcceptPolicy) {
    NSHTTPCookieAcceptPolicyAlways,//接收所有Cookie信息
    NSHTTPCookieAcceptPolicyNever,//不接收所有Cookie信息
    NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain//只接收主文档域的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<NSString *, id> *)properties;
+ (nullable NSHTTPCookie *)cookieWithProperties:(NSDictionary<NSString *, id> *)properties;
//返回Cookie数据中可用于添加HTTP头字段的字典
+ (NSDictionary<NSString *, NSString *> *)requestHeaderFieldsWithCookies:(NSArray<NSHTTPCookie *> *)cookies;
//从指定的响应头和URL地址中解析出Cookie数据
+ (NSArray<NSHTTPCookie *> *)cookiesWithResponseHeaderFields:(NSDictionary<NSString *, NSString *> *)headerFields forURL:(NSURL *)URL;
//Cookie数据中的属性字典
@property (nullablereadonlycopyNSDictionary<NSString *, id> *properties;
//请求响应的版本
@property (readonlyNSUInteger version;
//请求相应的名称
@property (readonlycopyNSString *name;
//请求相应的值
@property (readonlycopyNSString *value;
//过期时间
@property (nullablereadonlycopyNSDate *expiresDate;
//请求的域名
@property (readonlycopyNSString *domain;
//请求的路径
@property (readonlycopyNSString *path;
//是否是安全传输
@property (readonlygetter=isSecure) BOOL secure;
//是否只发送HTTP的服务
@property (readonlygetter=isHTTPOnly) BOOL HTTPOnly;
//响应的文档
@property (nullablereadonlycopyNSString *comment;
//相应的文档URL
@property (nullablereadonlycopyNSURL *commentURL;
//服务端口列表
@property (nullablereadonlycopyNSArray<NSNumber *> *portList;

人已赞赏
iOS文章

iOS使用NSMutableAttributedString实现富文本小结

2019-10-7 14:53:52

iOS文章

iOS中UITableViewController自带的刷新控件

2019-10-7 15:17:26

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索