(BOOL) webView... 不触发所有请求

Posted

技术标签:

【中文标题】(BOOL) webView... 不触发所有请求【英文标题】:(BOOL) webView... not firing on all requests 【发布时间】:2014-05-27 14:59:49 【问题描述】:

我正在使用 UIWebViews 开发 ios 应用程序,并且遇到了一些有趣的行为。

我正在尝试通过 UIWebView 将网站中的内容加载到 iOS 应用程序中,但我想阻止网站发出的某些调用(例如我的一些分析)以加快 WebView 中的加载速度。如果我将设备连接到代理(我一直在使用 Charles Proxy),我可以看到这些请求发出,就像我期望的那样。然而,无论出于何种原因,

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

未捕获我正在寻找的请求。事实上,webView:(UIWebView *)... 只触发了我看到的通过代理发出的大约三分之一的调用。

有人知道为什么会这样吗?或者知道我可以做些什么来拦截 UIWebView 发出的所有调用?

谢谢

【问题讨论】:

你设置了代理吗? 是的。它可能会触发 12 次/页面加载,我看到近 40 个请求通过代理发出。 【参考方案1】:

您不会收到来自 Web 视图的所有请求的委托调用(例如,资源请求,如 javascript 和图像)。

要对所有请求进行精确控制,您需要实现NSURLProtocol,您可以在其中决定允许哪些请求以及阻止哪些请求。

【讨论】:

以上是关于(BOOL) webView... 不触发所有请求的主要内容,如果未能解决你的问题,请参考以下文章

当 UIWebView 打开 PDF 时 webViewDidFinishLoad 未触发

在(BOOL)webView 中:如何打开在 UIWebView 中单击的 URL 以打开模态 UIWebView

Android webview ajax

Flutter webview 拦截所有请求并添加 headers

创建所有字段未定义的记录,不触发警告。

如何拦截webview的post请求