在调用 UIWebView 的 loadHTMLString 时拦截和修改资源/url 请求
Posted
技术标签:
【中文标题】在调用 UIWebView 的 loadHTMLString 时拦截和修改资源/url 请求【英文标题】:Intercept and modify resource/url requests while calling loadHTMLString of UIWebView 【发布时间】:2018-07-03 04:34:06 【问题描述】:我正在使用loadhtmlString
方法在UIWebView
上加载一些HTML 字符串。
[self.myWebView loadHTMLString:html baseURL:baseURL];
HTML 字符串如下所示。
<html>
<head></head>
<body>
<!-- [DocumentBodyStart:9ab3216e-b945-4432-141f-68164c25f0d6] -->
<div class="jive-rendered-content">
<p class="">Test description</p>
<a href="https://a-team-906-test.jivelandia.com/servlet/JiveServlet/previewBody/1091-102-1-1054/IMG_0005.JPG">
<img src="https://a-team-906-test.jivelandia.com/servlet/JiveServlet/previewBody/1091-102-1-1054/IMG_0005.JPG">
</a>
</div>
<!-- [DocumentBodyEnd:9ab3216e-b945-4432-141f-68164c25f0d6] -->
<script type="text/javascript" src="web/video-loading-events.js" onerror="alert('cant load video-loading-events.js')"></script>
</body><br>
</html>
如您所见,HTML 内容中有一个图像 URL。问题是由于身份验证问题,图像无法在 WebView 上加载。
那么我怎样才能拦截该图像 url 请求以查看引擎盖下发生了什么?如果有必要,我如何才能仅添加具有该特定请求的附加标头?
Objective-C 更可取,但也欢迎使用 Swift。提前致谢。
【问题讨论】:
【参考方案1】:一个好的起点是使用 safari web 检查器查看当您在应用中打开 web 视图时哪些错误被注销到控制台。
您需要从您的 iPhone 启用网络检查器,然后确保您在 safari 中启用了“在菜单栏中显示开发菜单”。
完成这两项后,您可以在 safari 中导航到 Develop -> <Your device or simulator> -> <your webview>
。
从开发者窗口刷新页面,看看什么被注销。
祝你好运!
【讨论】:
以上是关于在调用 UIWebView 的 loadHTMLString 时拦截和修改资源/url 请求的主要内容,如果未能解决你的问题,请参考以下文章
防止 DOMDocument::loadHTML() 转换实体