NSHTTPCookieStorage官方文档阅读
NSHTTPCookieStorage
Overview
NSHTTPCookieStorage实现一个管理cookie存储的单例对象(shared instance)。 每个cookie由NSHTTPCookie类的实例表示。 通常,Cookie在所有应用程序之间共享,并且跨进程边界保持同步。 会话Cookie(当Cookie对象的sessionOnly为YES)对于单个进程来说是本地的,不会共享。
NOTE:
1. iOS中的应用程序之间不会共享Cookie。
2. 对cookie接受策略所做的更改会影响使用Cookie storage的所有正在运行的应用程序。
在macOS 10.9 和iOS 7之后,NSHTTPCookieStorage就是线程安全的了;
Symbols Creating and Initializing a Cookie Storage Object
-
- (id)initWithStorageLocation:(NSURL *)storageFileURL
使用具有给定文件系统URL来初始化NSHTTPCookieStorage对象,以将Cookie信息存储在磁盘上。
storageFileURL:要用于Cookie存储的文件的URL。
-
@property(class, readonly, strong) NSHTTPCookieStorage *sharedHTTPCookieStorage
返回共享的cookie仓库,此属性为类属性;
-
@property NSHTTPCookieAcceptPolicy cookieAcceptPolicy
仓库接受cookie的策略;
默认cookie接受策略是NSHTTPCookieAcceptPolicyAlways。 更改cookie策略会影响使用Cookie存储的所有正在运行的应用程序。
-
- (void)deleteCookie:(NSHTTPCookie *)cookie
从仓库里删除指定的cookie;
-
- (void)setCookie:(NSHTTPCookie *)cookie
如果仓库的cookie接受策略允许,则在仓库中存储指定的cookie。
如果cookie存在于cookie仓库中,cookie将替换现有的具有相同名称,域和路径的cookie。 只有接收者的cookie接受策略是NSHTTPCookieAcceptPolicyAlways或NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain,此方法才接受cookie。 如果接收者的cookie接受策略是NSHTTPCookieAcceptPolicyNever,则cookie将被忽略。
-
- (void)setCookies:(NSArray
*)cookies forURL:(NSURL *)URL mainDocumentURL:(NSURL *)mainDocumentURL
如果仓库的cookie接受政策允许,则向调用者添加一组Cookie。
theURL:与添加的Cookie相关联的URL。
mainDocumentURL:如果知道top-level frame的主要HTML文档的URL, 可以是nil ,如果cookie接受策略是NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain,则此URL用于确定是否应该接受cookie。(不懂~~~)
如果存在于cookie存储中,新的cookie将替换现有具有相同的名称,域和路径的老的cookie。 如果接收者的cookie接受策略是NSHTTPCookieAcceptPolicyNever,则cookie将被忽略。
要从一组响应头存储Cookie,应用程序可以使用cookiesWithResponseHeaderFields:forURL:
传递头字段字典,然后使用此方法接收这些cookies。
-
@property(readonly, copy) NSArray
*cookies
仓库中存储的所有cookie;
如果要对cookie存储的cookie进行排序,应该使用sortedCookiesUsingDescriptors:
方法,而不是排序此方法的结果。
-
- (NSArray
*)cookiesForURL:(NSURL *)URL
【NSHTTPCookieStorage官方文档阅读】返回要发送到指定网址的Cookie仓库里的Cookie。即返回Cookie的URL与所提供的URL匹配一组cookie。
应用程序可以使用NSHTTPCookie方法requestHeaderFieldsWithCookies:
将此数组转换为一组标题字段以添加到NSMutableURLRequest对象头部信息中。
-
- (NSArray
*)sortedCookiesUsingDescriptors:(NSArray *)sortOrder
返回按照一组给定的排序描述符进行排序了的cookie。
sortOrder:用于排序的排序描述符,NSSortDescriptor对象的数组。
typedef enum NSHTTPCookieAcceptPolicy : NSUInteger {
NSHTTPCookieAcceptPolicyAlways,
NSHTTPCookieAcceptPolicyNever,
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
} NSHTTPCookieAcceptPolicy;
NSHTTPCookieAcceptPolicy指定由NSHTTPCookieStorage类实现的cookie接受策略。
1. NSHTTPCookieAcceptPolicyAlways:默认策略,接受所有的cookie;
2. NSHTTPCookieAcceptPolicyNever:拒绝所有的cookie;
3. NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:仅从主文档域接受cookie。
Notifications
-
const NSNotificationName NSHTTPCookieManagerCookiesChangedNotification
当NSHTTPCookieStorage实例中存储的cookie已更改时,会发布此通知。
在macOS中,Cookie在应用程序之间共享,这意味着可以发送此通知以响应另一个应用程序的操作。 iOS中的应用程序不会共享Cookie。
通知对象是NSHTTPCookieStorage实例。 此通知不包含用户信息字典。
-
const NSNotificationName NSHTTPCookieManagerAcceptPolicyChangedNotification
当NSHTTPCookieStorage实例的接受策略发生变化时,会发布此通知。
在macOS中,Cookie在应用程序之间共享,这意味着可以发送此通知以响应另一个应用程序的操作。 iOS中的应用程序不会共享Cookie。
通知对象是NSHTTPCookieStorage实例。 此通知不包含用户信息字典。
-
- (void)getCookiesForTask:(NSURLSessionTask *)task completionHandler:(void (^)(NSArray
*cookies))completionHandler
获取指定task中的所有cookie,并在获取后调用completionHandler(官方文档并未给出解释)
-
- (void)removeCookiesSinceDate:(NSDate *)date
官方文档并未给出解释,以下是根据头文件中的解释翻译来的
从cookie仓库中删除所有超过指定日期的cookie(但是我们并不知道内部对比的是什么时间,是添加cookie的时间还是cookie的到期时间,这点需要去验证下)
-
- (void)storeCookies:(NSArray
*)cookies forTask:(NSURLSessionTask *)task
存储指定task中的所有cookie(官方文档并未给出解释)
-
+ (NSHTTPCookieStorage *)sharedCookieStorageForGroupContainerIdentifier:(NSString *)identifier
该方法文档中并未给出解释,下面的解释是从头文件中翻译来的;
获取与指定的应用程序组标识符相关联的容器的cookie仓库;主要是用于APP和extensions之间的仓库共享;
identifier:应用程序组标识符
返回值:在应用程序组容器中持久存储的cookie仓库
默认情况下,应用程序和关联的应用extensions有不同的数据容器,这意味着sharedHTTPCookieStorage单例将在应用程序和extensions中引用不同的Cookie仓库。 此方法允许客户端创建一个可以在所有应用程序和extensions之间共享的持久性Cookie仓库,并可访问相同的应用程序组。 使用相同标识符对此方法的后续调用将返回相同的Cookie仓库实例。
推荐阅读
- 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
- zabbix|zabbix 6.2.0部署
- .net6与英雄联盟邂逅之——根据官方LCU|.net6与英雄联盟邂逅之——根据官方LCU API制作游戏助手
- unity官方内置网络unet的实例教程(八)
- 如何创建一个有效的帮助文档()
- Spring|Spring MVC 4.2.4.RELEASE 中文文档
- 【博赞官方】卓卷首届思维导图认证班学习分享No.00193
- 基于java的汽车管理系统+文档
- FDTD学习笔记|Lumerical官方案例、FDTD时域有限差分法仿真学习(十五)——y分支的逆向设计(Inverse design of y-branch)
- node生成word文档