iOS UIWebView的Cookie

作者: 木夜溯 | 来源:发表于2015-12-10 17:37 被阅读2140次

    当你访问一个网站时,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];

    UIWebView的cookie

    WKWebView和UIWebView之间的cookie共享

    相关文章

      网友评论

      • __西门吹雪:大哥。怎么查看你这个cookie配置是否正确呀?
        木夜溯:@__西门吹雪 代码读取cookie里面的值来查看存储了什么

      本文标题:iOS UIWebView的Cookie

      本文链接:https://www.haomeiwen.com/subject/qmlyhttx.html