NSHTTPCookie
Overview
NSHTTPCookie对象表示HTTP cookie。 它是一个不可变的对象,从包含cookie属性的字典初始化。
NSHTTPCookie类支持两种不同的cookie版本:
1. Version 0;此版本是指由Netscape定义的原始cookie格式的“传统”或“旧式”cookie。 遇到的大多数Cookie都是这种格式。
2. Version 1;此版本是指RFC 2965(HTTP状态管理机制)中定义的Cookie。
Symbols
Create cookie instances
-
+ (NSArray<NSHTTPCookie *> *)cookiesWithResponseHeaderFields:(NSDictionary<NSString *,NSString *> *)headerFields forURL:(NSURL *)URL
返回与指定的URL的响应头部相对应的NSHTTPCookie对象数组。
此方法忽略headerField中不相关的头字段,允许字典包含其他数据。
如果headerFields没有为给定的cookie指定域,则使用theURL的域名创建该cookie。
如果headerFields未指定给定cookie的路径,则使用默认路径值“/”创建cookie。
-
+ (NSHTTPCookie *)cookieWithProperties:(NSDictionary<NSHTTPCookiePropertyKey, id> *)properties
使用提供的属性创建和初始化NSHTTPCookie对象。
properties:新的Cookie对象的属性的键值对。
要成功创建一个cookie,你必须提供(至少)NSHTTPCookiePath,NSHTTPCookieName和NSHTTPCookieValue的键以及NSHTTPCookieOriginURL或NSHTTPCookieDomain键的值。
-
- (instancetype)initWithProperties:(NSDictionary<NSHTTPCookiePropertyKey, id> *)properties
同上;
Convert cookies to request headers
-
+ (NSDictionary<NSString *,NSString *> *)requestHeaderFieldsWithCookies:(NSArray<NSHTTPCookie *> *)cookies
返回与提供的Cookie数组相对应的标题字段的字典。
要将这些头文件作为URL请求的一部分发送到远程服务器,请创建一个NSMutableURLRequest对象,然后调用allHTTPHeaderFields或setValue:forHTTPHeaderField:方法来为请求设置提供的头文件。 最后,根据该请求对象初始化并启动NSURLSessionTask,NSURLConnection或NSURLDownload对象。
Getting cookie properties
-
@property(readonly, copy) NSString *comment
cookie的注释字符串;如果cookie没有注释,则为nil。 此字符串适用于向用户展示,说明此Cookie的内容和目的。
-
@property(readonly, copy) NSURL *commentURL
cookie的注释URL;接收者的注释URL,如果cookie没有,则为nil。 此值适用于向用户呈现URL,以获取有关此Cookie的更多信息。
-
@property(readonly, copy) NSString *domain
cookie的域名;
如果域不以点开头,那么cookie只会发送到该域指定的确切主机。 如果域以点开头,那么cookie也会发送到该域中的其他主机,但受到一定的限制。 有关详细信息,请参阅RFC 2965。
-
@property(readonly, copy) NSDate *expiresDate
cookie的过期时间;
接收者的到期日期,如果没有特定的到期日期(例如“仅限会话”)的Cookie,则为nil。 到期日是Cookie应删除的日期。
-
@property(readonly, getter=isHTTPOnly) BOOL HTTPOnly
一个布尔值,指示接收器是否应仅根据RFC 2965发送到HTTP服务器。
如果此cookie只能通过HTTP头发送,则返回YES,否则NO。Cookie可能被服务器(或JavaScript)标记为HTTP only。 被这样标记的Cookie只能通过HTTP请求的头部发送,并且每个URL与相应Cookie的路径和域都必须匹配。
NOTE:指定为HTTPOnly的Cookie不应传递到任何JavaScript应用程序,以防止跨站点脚本漏洞。
-
@property(readonly, getter=isSecure) BOOL secure
一个布尔值,表示该cookie是否应该仅通过安全通道发送。
-
@property(readonly, getter=isSessionOnly) BOOL sessionOnly
一个布尔值,指示接收者是否应在会话结束时被丢弃(不管过期日期如何)。
-
@property(readonly, copy) NSString *name
cookie的名字;
-
@property(readonly, copy) NSString *path
cookie的路径;
该cookie将在cookie的域中发送此路径的请求以及具有此前缀的所有路径。 “/”的路径表示将为域中的所有网址发送cookie。
-
@property(readonly, copy) NSArray<NSNumber *> *portList
cookie的端口列表;作为包含整数的NSNumber对象数组返回。 如果cookie没有端口列表,则此方法返回nil,并将cookie发送到任何端口。 否则,cookie只发送到端口列表中指定的端口。
-
@property(readonly, copy) NSDictionary<NSHTTPCookiePropertyKey, id> *properties
cookie的属性;该字典可以作为
initWithProperties:
或者是cookieWithProperties:
方法的参数来创建一个相等的cookie;
-
@property(readonly, copy) NSString *value
cookie的值;
-
@property(readonly) NSUInteger version
cookie的版本号;版本0映射到“旧式”Netscape Cookie。 版本1映射到RFC 2965 cookie。
Constants:HTTP Cookie Attribute Keys
-
const NSHTTPCookiePropertyKey NSHTTPCookieComment
包含cookie的注释的NSString对象。
仅适用于version 1 更高版本。此cookie属性是可选的。 -
const NSHTTPCookiePropertyKey NSHTTPCookieCommentURL
包含cookie的注释的NSString或NSURL对象。
仅适用于version 1 更高版本。此cookie属性是可选的。 -
const NSHTTPCookiePropertyKey NSHTTPCookieDiscard
一个NSString对象,说明在会话结束时是否应该丢弃该cookie。
字符串值必须是“TRUE”或“FALSE”。 此cookie属性是可选的。 默认值为“FALSE”,除非该cookie为1或更高版本并且没有指定NSHTTPCookieMaximumAge的值,在这种情况下,它将被假定为“TRUE”。 -
const NSHTTPCookiePropertyKey NSHTTPCookieDomain
包含cookie的域的NSString对象。
如果缺少此cookie属性,则会根据NSHTTPCookieOriginURL的值推断该域。 如果不指定NSHTTPCookieOriginURL的值,则必须为NSHTTPCookieDomain指定一个值。 -
const NSHTTPCookiePropertyKey NSHTTPCookieExpires
指定Cookie过期日期的NSDate对象或NSString对象。
此cookie属性仅用于version 0。此cookie属性是可选的。 -
const NSHTTPCookiePropertyKey NSHTTPCookieMaximumAge
一个NSString对象,其中包含一个整数值,表示最多保留cookie应该保持多长时间。
仅适用于version 1及更高版本。默认值为“0”。此cookie属性是可选的。 -
const NSHTTPCookiePropertyKey NSHTTPCookieName
包含cookie名称的NSString对象。此cookie属性是必需的。
-
const NSHTTPCookiePropertyKey NSHTTPCookieOriginURL
包含设置此cookie的URL的NSURL或NSString对象。
如果你不提供NSHTTPCookieOriginURL的值,则必须为NSHTTPCookieDomain提供一个值。 -
const NSHTTPCookiePropertyKey NSHTTPCookiePath
包含cookie名路径的NSString对象。此cookie属性是必需的。
-
const NSHTTPCookiePropertyKey NSHTTPCookiePort
NSString对象,包含逗号分隔的整数值,指定Cookie的端口。
仅适用version 1或更高版本。 默认值为空字符串("")。 此cookie属性是可选的。 -
const NSHTTPCookiePropertyKey NSHTTPCookieSecure
一个NSString对象,表示该cookie只能通过安全通道发送。
为此键提供任何值表示cookie应该保持安全。 -
const NSHTTPCookiePropertyKey NSHTTPCookieValue
包含cookie值的NSString对象。此cookie属性是必需的。
-
const NSHTTPCookiePropertyKey NSHTTPCookieVersion
指定cookie版本的NSString对象。
必须是“0”或“1”。 默认值为“0”。 此cookie属性是可选的。
网友评论