方案一:
使用 NSURLProtocol 拦截 WKWebView 请求
1、拦截请求需要使用私有接口(WKBrowsingContextController类和registerSchemeForCustomProtocol方法),存在兼容性风险以及上架被拒的风险
2、存在 POST 请求存在 body 会被清空的问题(由于我们只需要注册file scheme,不注册http/https scheme,所以不存在此问题)
3、对ATS支持不足,Allow Arbitrary Loads 选项设置为NO,同时通过 registerSchemeForCustomProtocol 注册了 http(s) scheme,WKWebView 发起的所有 http 网络请求将被阻塞(即便将Allow Arbitrary Loads in Web Content 选项设置为YES)
1、该方案只兼容 iOS 11 及以上设备
2、前端无法通过document.cookie获取客户端同步的cookie(如果前端不使用cookie,就不存在此问题)
NSProtocol方案:
1、
https://madaocn.github.io/urlprotocol-hook-wkwebview/
2、 https://juejin.im/post/6847902219434459144
3、 https://www.jianshu.com/p/f88c9d094aa5?utm_source=desktop&utm_medium=timeline
4、 https://www.jianshu.com/p/4fc13d4d5607/
5、 iOS - NSProtocol 拦截 WKWebView POST 请求 body 会被清空的问题解决
WKURLSchemeHandler方案:
1、
https://zhuanlan.zhihu.com/p/56965133