Objective c 从NSHTTPURLResponse获取多个集Cookie头
我正在尝试访问http响应中发送的Objective c 从NSHTTPURLResponse获取多个集Cookie头,objective-c,cocoa,foundation,Objective C,Cocoa,Foundation,我正在尝试访问http响应中发送的Set Cookie头: - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; NSDictionary *headers = [httpResponse allHeaderField
Set Cookie
头:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
NSDictionary *headers = [httpResponse allHeaderFields];
NSLog([headers description]);
}
HTTP服务器发送两个Set Cookie
头,如下所示:
Set-Cookie: foo=1; httponly; Path=/
Set-Cookie: bar=2; httponly; Path=/
但是,该接口将多个Set Cookie
头合并为一个逗号分隔的字符串:
"Set-Cookie" = "foo=1; httponly; Path=/, bar=2; httponly; Path=/"
证实了我的观察
是否有一个接口可以分别获取每个
设置Cookie
头或访问原始头?iOS和macOS定义一个NSHTTPCookie
类,该类可以解析并提供您要查找的信息:
NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields: [httpResponse allHeaderFields] forURL: [httpResponse url]];
NSArray*cookies=[NSHTTPCookie cookies with responseheaderfields:[httpResponse allHeaderFields]forURL:[httpResponse url]];
有关更多信息,请参阅适用于
NSHTTPCookie
我认为您必须手动执行:NSArray*setCookiesHeaders=headers[@“Set Cookie”]组件通过字符串分离:@“,”]
,并对其进行解析以检索您的信息。问题是,值是字符串,而头是字典,因此每个值只能有一个键,而且显然它们与一个“,“如果它已经存在。用逗号分隔字符串是不够的,因为cookie本身可能也包含逗号。这不会提供所有cookie,这只会在请求域与响应cookie匹配时提供cookie。”。