APP中的cookie
网页app
wkwebview中的cookie:
1:wkwebview默认可以携带原⽣接⼝种下的cookie;iOS8以后,cookie都存储在NSHTTPCookieStore的单例中,会⾃动同步各处的cookie;
2:iOS9-iOS10,wkwebview中只能访问cookie,不能设置(也不推荐)。(两种⽅法:header头中种cookie,通过js插⼊或桥接主动存储cookie,问题⽐较多,⽐如稳定性不好,headed主动设置后js再设置⽆效,且需要主动处理各种cookie的持久化等)
⾃测发现,虽然并不能在调试中看到wkwebview中 的cookie,但是实际接⼝却能读取到。所以不主动插⼊cookie,测试中看没啥问题;
3:iOS11 之后,新增WKHTTPCookieStore,可以管理cookie(查看、清除和设置);
4:不同的webview之间同步cookie:可以使⽤BXProcessPool单例(因为把他们变成统⼀进程中,被设置成isSessionOnly的cookie就可以同步了);
5:webview中的cookie可以被⾃动同步到原⽣(isSessionOnly=yes的除外)。
6:Cookie可在不同进程之间保持同步。⽽Session Cookie(⼀个isSessionOnly⽅法返回YES的Cookie)只能在单⼀进程中使⽤。wkwebview 是有独⽴进程的,所以,设置成isSessionOnly=yes的cookie不能在原⽣请求和wkwebview之间同步。
7:cookie中⼀些字段的解释:
HttpOnly:如何保障我们的Cookie安全呢?Cookie都是通过document对象获取的,我们如果能让cookie在浏览器中不可见就可以了,那HttpOnly就是在设置cookie时接受这样⼀个参数,⼀旦被设置,在浏览器的document对象中就看不到cookie了。⽽浏览器在浏览⽹页的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括Ajax的时候),应⽤程序也⼀般不会在JS⾥操作这些敏感Cookie的,对于⼀些敏感的Cookie我们采⽤HttpOnly,对于⼀些需要在应⽤程序中⽤JS操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应⽤。
⽹上所谓的 UIWebView WKWebView 和 Native 之间同步 Cookie 的⽅法,只要看到⾥⾯有 Javascript 代码的,都存在这个问题,根本原因就在于HTML 页⾯是不能通过 Javascript 代码来修改 HttpOnly 属性是 true 的 Cookie .

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。