当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请求。原理是透过iOS提供的NSHTTPCookieStorage元件来控制所有从这个Application发出的HTTP Request,如果在UIWebview有使用iFrame或者AJAX发出的Request同样会受到影响,让cookie可以集中管理。
认识下NSHTTPCookieStorage
NSHTTPCookieStorage 实现了一个管理cookie的单例对象(只有一个实例),每个cookie都是NSHTTPCookie类的实例,最为一个规则,cookie在所有应用之间共享并在不同进程之间保持同步。Session cookie(一个isSessionOnly方法返回YES的cookie)只能在单一进程中使用。
request 设置cookie
//定义cookie要设设定的host
NSURL*cookieHost=[NSURLURLWithString:@"url"];
// 設定 cookie
NSHTTPCookie*cookie=[NSHTTPCookiecookieWithProperties:
[NSDictionarydictionaryWithObjectsAndKeys:
[cookieHost host],NSHTTPCookieDomain,
[cookieHost path],NSHTTPCookiePath,
@"COOKIE_NAME",NSHTTPCookieName,
@"COOKIE_VALUE",NSHTTPCookieValue,
nil]];
// 設定 cookie 到 storage 中
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
webView 清除cookie
//清除cookies
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]){
[storage deleteCookie:cookie];
}
WebView 清除缓存
[[NSURLCachesharedURLCache] removeAllCachedResponses];
NSURLCache * cache = [NSURLCache sharedURLCache];
[cache removeAllCachedResponses];
[cache setDiskCapacity:0];
[cache setMemoryCapacity:0];
网友评论