Cookie的基本概念和定义:
每一个cookie在本地存储包含的内容如下:
Cookie可以分为两类,会话Cookie和持久Cookie,会话Cookie是临时Cookie,当前会话结束(浏览器退出)时Cookie会被删除。持久Cookie会存储在用户的硬盘上,浏览器退出,然后重新启动后Cookie仍然存在。会话Cookie和持久Cookie的区别在于过期时间,如果设置了Discard参数(Cookie 版本1)或者没有设置Expires(Cookie版本0)或Max-Age(Cookie版本1)设置过期时间,则此Cookie为会话Cookie
Cookie有两个版本,一个是版本0(Netscape Cookies)和版本1(RFC 2965),目前大多数服务器使用的Cookie 0。
NSHTTPCookie 类描述每个具体的cookie,
1.cookie的建立,
- (id)initWithProperties:(NSDictionary *)properties;
+ (id)cookieWithProperties:(NSDictionary *)properties;
这个字典是描述cookie的各种属性的,其中的key 有如下:
FOUNDATION_EXPORT NSString * const NSHTTPCookieName;
FOUNDATION_EXPORT NSString * const NSHTTPCookieValue;
//和Domain二选1
FOUNDATION_EXPORT NSString * const NSHTTPCookieOriginURL;
//和OriginURL二选1
FOUNDATION_EXPORT NSString * const NSHTTPCookieDomain;
//必选,默认是"/"
FOUNDATION_EXPORT NSString * const NSHTTPCookiePath;
//String型,0或者1,1为会话cookie,0为永久cookie,默认为0
FOUNDATION_EXPORT NSString * const NSHTTPCookieVersion;
//String型TRUE FALSE
FOUNDATION_EXPORT NSString * const NSHTTPCookieSecure;
//日期型NSDate,只在为0是需要设置
FOUNDATION_EXPORT NSString * const NSHTTPCookieExpires;
//可选,表示在会话内的有效时间,单位为秒。
FOUNDATION_EXPORT NSString * const NSHTTPCookieMaximumAge;
//从响应头字典里面得到cookie数组,这个是在HTTP响应头里面,响应头可以包括其他字典信息,但只会解析Set-Cookie部分。
+ (NSArray *)cookiesWithResponseHeaderFields:(NSDictionary *)headerFields forURL:(NSURL *)URL;
//根据cookie数组得到http请求头的cookie部分的值,得到字典中只有一个kv对
+ (NSDictionary *)requestHeaderFieldsWithCookies:(NSArray *)cookies;
//其他方法是都是得到cookie的属性的,有一个特殊属性就是是否会话有效,如果是则表示不保存关闭浏览器就没有。
NSHTTPCookieStorage 读取和保存应用内的cookie信息。
+ (NSHTTPCookieStorage *)sharedHTTPCookieStorage;
- (NSArray *)cookies;
- (void)setCookie:(NSHTTPCookie *)cookie;
- (void)deleteCookie:(NSHTTPCookie *)cookie;
- (NSArray *)cookiesForURL:(NSURL *)URL; //根据地址得到数组,这个函数的返回用于requestHeaderFieldsWithCookies的调用
//这个主要是在NSURLRequest中有一个设置主文档URL的地方,表示对于响应的URL中的跟主文档URL相同域的响应头中的cookie进行保存,
这个函数一般不用自己调用。
- (void)setCookies:(NSArray *)cookies forURL:(NSURL *)URL mainDocumentURL:(NSURL *)mainDocumentURL;
//设置获取接收策略
- (void)setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)cookieAcceptPolicy;
NSHTTPCookieAcceptPolicyAlways:接收所有cookie,默认策略.
NSHTTPCookieAcceptPolicyNever: 拒绝所有cookie- (void)setHTTPShouldHandleCookies:(BOOL)should;
来决定请求时要不要带上cookie信息,默认是YES表示请求时会默认带上cookie信息。
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + 30*24*60*60*1000);
document.cookie="mytest=mytest;domain=.baidu.com;expires="+exp.toGMTString();