美文网首页WKWebView 与 js 交互 以及Cookies技术wkwebview
不要烦恼WKWebView的Cookie注入,来这看看吧

不要烦恼WKWebView的Cookie注入,来这看看吧

作者: 风之谷等风来 | 来源:发表于2017-03-23 14:44 被阅读4667次

上篇文章中提到过初识Session和Cookie,了解了它们的原理和项目中的作用,但是并没有实际用到过,直到前几天,才知道想要搞定Cookie是有多麻烦,还好解决了,现在来这里记录一下,共自己以后查看和研究这方面知识遇到困难的小伙伴们参考!!!

我这边在用到UIWebView的时候,打开一个网页内存直接达到100M,没打开才25M,如果使用WKWebView的话,内存是32M,因为我是给游戏做SDK,游戏本身就很大,如果这个打开网页又突然增加这么多,产品那边可能不让过,想了一下还是要用WK。

但是WK不支持Cookie机制,Google,百度的时候,很多样式,解决方法,但用了之后,总是不适合,一直打不开。其实很多的解决方法思路都是一样的,在WKWebView加载网络请求的时候,用NSMutableURLRequest加上一个Cookie的字符串,在WKWebView创建的时候,也就是初始化的时候,用js注入。我也是用的这个方法,开始还是不行,最后跟后台沟通了一下,做了一点调整就行了,下面上图!

1,我这边有个登录过程,用来上传用户信息,我可以在这个请求完成之后,把Cookie保存下来,大家如果有不用的需求,可以考虑自己的方法。

这里的cookieStr是我登录请求的链接URL,我在请求成功的回调中保存。

图1

2,在WKWebView初始化的时候,js注入

我这里只注入了PHPSESSION对应的值,我这样就可以了;大家可以按照自己保持下来的cookie字符串逐一查看,如果一个不行,就全部注入试试。。。

图2 图3

3,WKWebView加载请求的时候,给请求添加Cookie对应的字符串

这里面就是一个加载请求,注意我在这里注入的时候,没有加;path=/

图4 图5

总结:这样,我在SDK登录之后,就把cookie保存在系统提供了单例里面,在WKWebView加载的时候,利用上述方法,就能实现cookie机制了,不知道大家是什么情况,我这样就解决了,如果有什么问题,希望能一起研究研究!!!

相关文章

网友评论

  • 洁简:请求添加Cookie对应的字符串按照你的方法一直失败是分号的原因吗
  • f813a3417ebb:请问下如果我有多个cookie,当调用[request setValue:cookieStr forHttpHeaderFielder:Cookie]方法时,该方法不是会只记录最后一个cookie吗
  • yunil:如何解决h5调用原生登录,然后拿到cookie怎么在设置到h5当前,再reload当前页面
    无声落叶:@yunil :joy: 我的问题跟你的问题有点类似。尝试了很多方法都不行,JSESSINID到页面都没问题,到ajax里面就没了。不过用uiwebview就没问题了。wkwebview通过NSURLProtocol应该也可以解决这个问题,不过接口要客户端调用。
    yunil:@东山望岳 困扰着我,有没有什么方式可以解决下这种方式啊?
    ChrisPaulss:你这个需求有些奇葩啊
  • ec759b7be145:你好,我现在也在处理这个问题,问一下如果我退出登录切换账号的时候怎么清除掉cookie中的登录账号信息呢
    风之谷等风来:@丑八怪_61e2 这个我也不太清楚,我这边不做这个项目了
    ec759b7be145:@风之谷等风来 我用的afn ,在退出登录的时候清理掉了cookie,但是重新启动的时候才会清理
    风之谷等风来:@丑八怪_61e2 你的网络请求工具应该是AFN的单例吧,这个会缓存cookie,你手动把他清理掉,拿到它的cookie缓存单例操作
  • RobertLuo:请问你有demo吗?遇到同样的问题了想借鉴下!
    风之谷等风来:demo没有的,上面说的也算清楚吧,我解决问题的方法都在里面

本文标题:不要烦恼WKWebView的Cookie注入,来这看看吧

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