wkwebview cookie同步

一、wkwebview之间同步

+(WKProcessPool *)shareWKProcessPool

{

    if (processPoll ==nil) {

        processPoll = [[WKProcessPoolalloc]init];

    }

    returnprocessPoll;

}


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

    

    WKWebViewConfiguration *internalConfig = [[WKWebViewConfigurationalloc]init];

    internalConfig.processPool = [WKViewControllershareWKProcessPool];

    //WKUserContentController *contentController = [[WKUserContentController alloc] init];

    //internalConfig.userContentController = contentController;

    

    WKWebView *webView = [[WKWebViewalloc]initWithFrame:self.view.boundsconfiguration:internalConfig];

    [webView loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://localhost:81/test/indexcookie.html"]]];

    [self.viewaddSubview:webView];


    webView.navigationDelegate =self;

    webView.UIDelegate =self;

}



二、把UIWebView的cookie同步到WKWebView

方法1:

[internalConfig.userContentControllerremoveAllUserScripts];

    NSString *JSCookieString =@"document.cookie='name=value;domain=www.domain.com;expires=eee, dd MM yyyy HH:mm:ss;path=/'";

    WKUserScript * cookieScript = [[WKUserScriptalloc]

                                   initWithSource:JSCookieString

                                   injectionTime:WKUserScriptInjectionTimeAtDocumentStartforMainFrameOnly:NO];

    [internalConfig.userContentControlleraddUserScript:cookieScript];

WKWebView *webView = [[WKWebViewallocinitWithFrame:self.view.boundsconfiguration:internalConfig];

    [webView loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://localhost:81/test/indexcookie.html"]]];



方法2:

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:81/test/indexcookie.html"]];

      [request addValue:@"name=value;...;...forHTTPHeaderField:@"Cookie"];

    [webView loadRequest:request];




方法3:

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {

//    [webView evaluateJavaScript:@"document.cookie ='TeskCookieKey1=TeskCookieValue1';" completionHandler:^(id result, NSError *error) {

//        //...

//    }];

    

    //思路是这样子的,我们可以通过NSHTTPCookieStorage的一个单例,拿到app中所有的UIWebViewcookie,拿到之后再通过让WKWebView执行一段js代码,把这些cookie设置到WKWebView中,这样就可以实现WKWebView获取UIWebViewcookie了。

    //取出cookie

    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStoragesharedHTTPCookieStorage];

    //js函数

    NSString *JSFuncString =@"function setCookie(name,value,expires)\

    {\

    var oDate=new Date();\

    oDate.setDate(oDate.getDate()+expires);\

    document.cookie=name+'='+value+';expires='+oDate;\

    }";

    

    //拼凑js字符串

    NSMutableString *JSCookieString = JSFuncString.mutableCopy;

    for (NSHTTPCookie *cookiein cookieStorage.cookies) {

        NSString *excuteJSString = [NSStringstringWithFormat:@"setCookie('%@', '%@', 1);", cookie.name, cookie.value];

        [JSCookieString appendString:excuteJSString];

    }

    //执行js

    [webView evaluateJavaScript:JSCookieStringcompletionHandler:nil];

    

    

    //读取

    [webView evaluateJavaScript:[NSStringstringWithFormat:@"document.cookie"]completionHandler:^(id_Nullable response, NSError *_Nullable error) {

        if (response !=0) {

            NSLog(@"\n\n document.cookie:%@,%@",response,error);

        }

    }];

}


参考:http://fengqiang.leanote.com/post/iOS%E5%BC%80%E5%8F%91-%E6%89%93%E9%80%9AUIWebView%E5%92%8CWKWebView%E7%9A%84Cookie


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值