方案一:
使用 NSURLProtocol 攔截 WKWebView 請(qǐng)求
問題:
1、攔截請(qǐng)求需要使用私有接口(WKBrowsingContextController類和registerSchemeForCustomProtocol方法)械念,存在兼容性風(fēng)險(xiǎn)以及上架被拒的風(fēng)險(xiǎn)
2蒸健、存在 POST 請(qǐng)求存在 body 會(huì)被清空的問題(由于我們只需要注冊file scheme,不注冊http/https scheme,所以不存在此問題)
3座享、對(duì)ATS支持不足,Allow Arbitrary Loads 選項(xiàng)設(shè)置為NO婉商,同時(shí)通過 registerSchemeForCustomProtocol 注冊了 http(s) scheme,WKWebView 發(fā)起的所有 http 網(wǎng)絡(luò)請(qǐng)求將被阻塞(即便將Allow Arbitrary Loads in Web Content 選項(xiàng)設(shè)置為YES)
方案二:
使用 WKURLSchemeHandler 攔截 WKWebView 請(qǐng)求
問題:
1渣叛、該方案只兼容 iOS 11 及以上設(shè)備
2丈秩、前端無法通過document.cookie獲取客戶端同步的cookie(如果前端不使用cookie,就不存在此問題)
NSProtocol方案:
1、https://madaocn.github.io/urlprotocol-hook-wkwebview/
2淳衙、https://juejin.im/post/6847902219434459144
3蘑秽、http://www.reibang.com/p/f88c9d094aa5?utm_source=desktop&utm_medium=timeline
4、http://www.reibang.com/p/4fc13d4d5607/
5箫攀、iOS - NSProtocol 攔截 WKWebView POST 請(qǐng)求 body 會(huì)被清空的問題解決
WKURLSchemeHandler方案:
1肠牲、https://zhuanlan.zhihu.com/p/56965133
2、http://www.reibang.com/p/a9d7b1bc3ae6
4缀雳、http://www.reibang.com/p/6bae04c91297
注:文章末尾存在規(guī)避使用私有方法風(fēng)險(xiǎn)的方法
NSURLPtotocol無法攔截AFN ,WKWebView