美文网首页
WKWebView拦截请求资源

WKWebView拦截请求资源

作者: MrSYLong | 来源:发表于2020-11-05 16:20 被阅读0次

    方案一:
    使用 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)

    方案二:
    使用 WKURLSchemeHandler 拦截 WKWebView 请求
    问题:
    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

    2、https://www.jianshu.com/p/a9d7b1bc3ae6

    3、WKWebView离线包开发小记

    4、https://www.jianshu.com/p/6bae04c91297

    其他:
    一站式解决WKWebView各类问题

    WKWebView 离线包方案比较

    注:文章末尾存在规避使用私有方法风险的方法
    NSURLPtotocol无法拦截AFN ,WKWebView

    WKWebView 那些坑

    相关文章

      网友评论

          本文标题:WKWebView拦截请求资源

          本文链接:https://www.haomeiwen.com/subject/gxngvktx.html