概述
本文主要介绍,防 DNS 污染方案在 WebView 场景下所遇到的一些问题,及解决方案。
WKWebView 无法使用 NSURLProtocol 拦截请求
针对该问题方案如下:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在处理WebView中DNS污染问题时,您遇到了一些挑战,尤其是当使用WKWebView并尝试通过NSURLProtocol拦截请求时。由于WKWebView并不直接支持NSURLProtocol的拦截方式,您探索了几个解决方案,包括回退到UIWebView和利用私有API来绕过这一限制。下面是对您采取措施的一些补充说明和建议:
WKBrowsingContextController
可以实现对WKWebView请求的拦截,但这种方法存在一定的风险。苹果不鼓励在App Store应用中使用私有API,因为这可能导致审核被拒或在未来的iOS版本中功能失效。确保了解这些潜在后果。loadView
或适当的初始化方法里完成,确保WebView创建和加载请求之前一切就绪。在处理WKWebView的DNS污染问题时,采用私有API确实是一种可行的技术手段,但务必谨慎行事,充分评估长期维护的风险。同时,持续关注苹果官方的更新,寻找更稳定、官方推荐的解决方案。在开发过程中,也应准备应对策略,以便在未来iOS版本变动时能够快速调整。