公司项目中要求使用HTML来加载页面并做登录和Nginx验证,首先使用的是uiwebview来加载页面,但页面中使用了大量的图形数据的展示,加载过程相当的慢,消耗大量的内存,所以选用WKWebView
![](https://img.haomeiwen.com/i3021590/8d43e4262119c332.png)
换成wkwebview后WKWebView页面的cookie不共享,WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在 WKWebView 上直接使用 NSURLProtocol 无法拦截请求。WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于 NSHTTPCookieStorage 容器中的 Cookie。
在网上找了很多方法也没能解决这个问题比如这样获取cookie,但是并没有获取到,最后选用了比较笨的方法,
![](https://img.haomeiwen.com/i3021590/d6cf8e0ac98e9bd7.png)
先通过uiwebview登录获取cookie
![](https://img.haomeiwen.com/i3021590/698bae16fb47b992.png)
在WKWebView中使用cookie
![](https://img.haomeiwen.com/i3021590/267c6eb86976e932.png)
![](https://img.haomeiwen.com/i3021590/b34d12077b82886f.png)
通过这种方法就可以多个WK页面共享一个cookie,完成登录,展示页面
Nginx验证
HTML 服务中使用了Nginx验证的方式
![](https://img.haomeiwen.com/i3021590/e8d989a12c7e7551.png)
期初使用这个方法并没有解决问题
![](https://img.haomeiwen.com/i3021590/ff8507fae7bbf79f.png)
在与大神的请教中找到了这个方法
![](https://img.haomeiwen.com/i3021590/83cddc15cfccaf80.png)
![](https://img.haomeiwen.com/i3021590/b7dd1b6d78abd0ad.png)
搜索到这个方法,解决
![](https://img.haomeiwen.com/i3021590/cc0be0f16359c317.png)
![](https://img.haomeiwen.com/i3021590/b4223ed6a7143695.png)
使用不对的地方欢迎大佬们指点,在这里感谢一直给予我帮助的"海恩庭斯公爵",让我写下自己的第一篇博客,以后会多多学习,多多更新,学以致用! 有些方法是在网上搜到的时间久找不到出处啦,表示感谢
网友评论