我必须设置NSHTTPCookie,使其到期时间设置为会话。我使用以下代码来设置该cookie的属性。
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"mycookiename" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"mycookievalue" forKey:NSHTTPCookieValue];
[cookieProperties setObject:[NSNumber numberWithBool:TRUE] forKey:NSHTTPCookieSecure];
[cookieProperties setObject:@"com.mydomain" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"com.mydomain" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
但是,上述两个属性都将到期时间设置为 2001年1月1日02:00:00 GMT + 2 ,而不是将到期时间设置为会话
答案 0 :(得分:3)
您应该查看 sessionOnly 属性。 Apple Documentation
它说:
一个布尔值,指示是否应在会话结束时丢弃接收方(无论到期日期如何)。 (只读)
如果接收方应在会话结束时丢弃,则为“是” (不论有效期限),否则为NO。
您还可以查看精湛的资料库ASIHTTPRequest
它有一些很好的方法可以帮助你。从他们的方法:
在这种情况下,“会话cookie”是指在会话期间创建的所有cookie,而不是在应用程序退出时删除的没有到期日期的cookie(通常称为会话cookie)。
因此,您可能希望创建一个没有设置过期日期的NSHTTPCookie
。
此信息也可以在 Apple文档
中找到接收方的到期日期,如果没有特定的到期日期,则为零,例如“仅限会话”的cookie。到期日期是应删除cookie的日期。
这样做:
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[@"Test Value" encodedCookieValue] forKey:NSHTTPCookieValue];
[properties setValue:@"ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName];
[properties setValue:@".allseeing-i.com" forKey:NSHTTPCookieDomain];
//Here you can set expiration date
[properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires];
[properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];