NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
@"www.google.com", NSHTTPCookieDomain,
@"/abc", NSHTTPCookiePath, // IMPORTANT!
@"testCookies", NSHTTPCookieName,
@"1", NSHTTPCookieValue,
nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];
如上面的cookie,
对www.google.com/abc的请求,这个cookie会附加在请求的头中,
对www.google.com/123的请求,则不会加入。
工作中,登录的url是 www.domain.com/user,
取数据的url是www.domain.com/data.
在登录后,无法取得数据,原来,是登录后,服务端返 回的cookie的path是/user。
这个cookie在/data的请求中是不加入头的,因为服务端不知找谁改,所以只好在客户端修改cookie了:
NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:urlPath]];
NSEnumerator *enumerator = [cookies objectEnumerator];
NSHTTPCookie *cookie;
while (cookie = [enumerator nextObject])
{
if ([[cookie name] isEqualToString:@"JSESSIONID"])
{
NSMutableDictionary *propscook = [[NSMutableDictionary alloc] initWithDictionary: [cookie properties]];
propscook[@"Path"] = @"/";
[sharedHTTPCookieStorage deleteCookie:cookie];
NSHTTPCookie *newcookie = [NSHTTPCookie cookieWithProperties:propscook];
[sharedHTTPCookieStorage setCookie:newcookie];
break;
}
}