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 , readonly, copy) NSArray<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 (nullable, readonly, copy) NSDictionary<NSString *, id> *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<NSNumber *> *portList;

目录
相关文章
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
4月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
207 6
|
8月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
851 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
2月前
|
安全 Linux 虚拟化
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
162 3
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
|
7月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
3月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
414 11
|
8月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
381 0
中国联通网络资源湖仓一体应用实践
|
4月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
291 0
|
4月前
|
安全 Linux
利用Libevent在CentOS 7上打造异步网络应用
总结以上步骤,您可以在CentOS 7系统上,使用Libevent有效地构建和运行异步网络应用。通过采取正确的架构和代码设计策略,能保证网络应用的高效性和稳定性。
153 0
|
7月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
254 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析