UIWebView和WKWebView的cookie研究(一)

一、背景

前段時間,有前端開發(fā)同學反饋,WKWebView的Cookie存在讀不到的問題,并給出了網(wǎng)上的一些博客資料。趁空閑時間,研究實驗下。

主要參考資料

  1. 這才是 WKWebview Cookie 管理的正確方式
  2. iOS開發(fā)WKWebView Cookie的讀取與寫入,與UIWebView的Cookie共享
  3. UIWebView遷移WKWebView過程中遇到的各種坑

二、分析

通過閱讀以上幾篇博客,總結下來,主要說明和解決的核心問題是:

UIWebView和WKWebView因為Cookie的存儲目錄的不同,導致相互之間的Cookie不能共享。

為了驗證該問題,特做了幾個簡單實驗,實驗機型為:iPhoneX 12.1.2系統(tǒng)。

2.1 Cookie的設置和讀取

JavaScript中,Cookie的設置通過如下方法:

function setCookie(name,value)
{
    var Days = 30;
    var exp = new Date();
    // cookie存儲時間
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
} 

讀取方法:

function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正則匹配
    if(arr=document.cookie.match(reg)){
      return unescape(arr[2]);
    }
    else{
     return null;
    }
} 

刪除方法:

function delCookie(name)
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null){
      document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    }
} 

2.2 WKWebView 和 UIWebView的Cookie存儲對比實驗

準備工作:
(1) 實驗的Demo頁面
(2) .binarycookies文件解析器-BinaryCookieReader

1 通過Xcode下載AppData

下載AppData數(shù)據(jù).png

2 找到Cookie的存儲目錄

Cookie存儲目錄.png

發(fā)現(xiàn)只有一個Cookies.binarycookies文件,而不是此文所說的兩個目錄,因此推斷,真機環(huán)境下,Cookie都存儲在同一個位置。

3 解析Cookies.binarycookies文件
通過BinaryCookieReader解析

Python BinaryCookieReader.py [Cookie.binarycookies-file-path]

可以看到如下內(nèi)容:

Cookie : BAIDUID=99F3FE1706B17E694C8C2FB8A86937BF:FG=1; domain=.baidu.com; path=/; expires=Thu, 30 Jan 2020; 

4 通過WKWebView設置Cookie,UIWebView讀取Cookie
WKWebView設置Cookie: name = skate

WKWebView存儲和讀取Cookie.png

UIWebView讀取Cookie

UIWebView讀取Cookie.png

同時查看Cookies.binarycookies文件,發(fā)現(xiàn)增加了剛才設置的Cookie條目

Cookie : BAIDUID=99F3FE1706B17E694C8C2FB8A86937BF:FG=1; domain=.baidu.com; path=/; expires=Thu, 30 Jan 2020; 
Cookie : name=skate; domain=10.117.23.129; path=/; expires=Fri, 01 Mar 2019; 

5 通過UIWebView設置Cookie,WKWebView讀取Cookie
UIWebView設置Cookie: name = zhb,步驟如上,不再貼出截圖,發(fā)現(xiàn)WKWebView讀取的Cookiename = zhb,查看Cookies.binarycookies文件

Cookie : BAIDUID=99F3FE1706B17E694C8C2FB8A86937BF:FG=1; domain=.baidu.com; path=/; expires=Thu, 30 Jan 2020; 
Cookie : name=zhb; domain=10.117.23.129; path=/; expires=Fri, 01 Mar 2019; 

相應的Cookie發(fā)生了變化。

2.3 實驗結論

通過上述實驗發(fā)現(xiàn),在真機iPhoneX 12.1.2系統(tǒng)環(huán)境下,WKWebViewUIWebViewCookie存儲位置一致,彼此共享。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容