给NSURLRequest 加点cookie

作者: pengxiaochao | 来源:发表于2017-08-01 22:17 被阅读115次

    最近项目中碰到的需求是,在混合 开发中,给H5 的请求加点cookie
    怎么调试,怎么塞,怎么验证呢;

    这次我们拿 https://www.baidu.com 来做实验,插入我自己的名字 拼音 pengchaothis is my cookie ;

    实验结果如图:
    第一步,允许你的iphone 或者 ios simluator 允许开发者调试,怎么做呢;

    iphone -> 设置 -> Safari -> 高级 - >javaScript 和 web检查器 勾选;

    第二步,找到 mac 的 Safari 浏览器,打开偏好设置,找到最下方的,在菜单栏中显示"开发"菜单;
    第三步,运行代码,在safari 的开发中,找到 正在调试的 iphone 或者 simluator

    ,找到对应的那个 请求的域名,或者详细链接,会出现类似chrome 的开发者工具

    第四步:放代码 ,就用webView 模拟了一个请求,塞了一个自定义cookie
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        NSString *urlStr = @"https://www.baidu.com";
        NSURL *url =[NSURL URLWithString:urlStr];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        
        NSHTTPCookie *cookie = [self setName:@"pengchao" value:@"this is my  cookie"];
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
        [self.webView loadRequest:request];
    }
    
    写一个常用的方法,只传name 和 value 即可,如果需要别的设置,可以自定义,最好封装一下,以供下次单独使用
    -(NSHTTPCookie *)setName:(NSString *)CookieName value:(NSString *)CookieValue{
        
        NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
        [cookieProperties setObject:CookieName forKey:NSHTTPCookieName];
        //设置cookie 的name
        [cookieProperties setObject:CookieValue forKey:NSHTTPCookieValue];
        //设置cookie 的name 对应的value 值
        [cookieProperties setObject:@".baidu.com" forKey:NSHTTPCookieDomain];
        //设置cookie 的域
        [cookieProperties setObject:@".baidu.com" forKey:NSHTTPCookieOriginURL];
        //
        [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
        //设置cookie在哪个路径下
        [cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
        //设置cookie的版本
        [cookieProperties setObject:[NSDate dateWithTimeIntervalSinceNow:60*60*24] forKey:NSHTTPCookieExpires];
        //设置失效时间
        [cookieProperties setObject:@"0" forKey:NSHTTPCookieDiscard];
        //设置sessionOnly
        
        NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
        return cookie;
    }
    

    代码,我就不解释啦,所有代码都在这,如果用户需要缓冲到本地,可以用 NSUserDefaults

    妈妈再也不用担心我给H5 塞cookie 出问题了


    最后几张图,帮你找到iphone safari 的调试地方:



    相关文章

      网友评论

        本文标题:给NSURLRequest 加点cookie

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