NSURLProtocol在WebView中的使用
WebView 里的网络求拦截,NSURLProtocol可以说是个挺好用的工具。它让你可以自己动手控制 HTTP 求,比如要不要缓存、加密、甚至拦截一些 JS 求都可以做到。
NSURLProtocol是 Foundation 里的抽象类,想玩它,得先自己写个子类,重写canInit(with:)
、startLoading()
这些方法,在启动的时候注册一下。看着有点麻烦,但其实还蛮清晰的。
比如你可以写一个CustomNSURLProtocol
类,在canInit(with:)
里判断 URL 是不是你关心的,再在startLoading()
里用NSURLConnection
去发求,响应回来后通知 WebView。响应也快,逻辑也不绕。
要注意哦,WKWebView里用NSURLProtocol
的话得特殊,需要借助WKURLSchemeHandler
,不然是没效果的。像NSURLProtocol-WebKitSupport-master
这个项目就做了不少兼容的事,值得一看。
,NSURLProtocol可以让你像中间人一样管控所有 WebView 发起的求,做测试、搞调试、加安全通道都还挺方便的。但用的时候别太贪心,拦太多也容易出 bug,尤其在 WKWebView 里。
如果你正好在做 Hybrid App,或者想拦一拦 WebView 的 JS 求,不妨研究下这个方法,灵活又实用。
NSURLProtocol-WebKitSupport-master (1).zip
预估大小:22个文件
NSURLProtocol-WebKitSupport-master
文件夹
.gitignore
619B
NSURLProtocol+WebKitSupport
文件夹
AppDelegate.h
294B
ReplacingImageURLProtocol.m
1KB
image.png
17KB
ViewController.h
232B
Base.lproj
文件夹
Main.storyboard
6KB
LaunchScreen.storyboard
2KB
1.19MB
文件大小:
评论区