UIWebView无法加载协议相对URL的图片。

6
  1. 使用UIWebView制作一个应用程序,打开一个包含协议相对样式和图像的网页,例如<img src="//example.com/image.png">(有关httphttps的示例)。

  2. 通过您自定义的NSURLConnection重写页面加载过程,可以这样做

结果:它不会显示图像!尽管Safari和其他浏览器可以正确显示...

1个回答

4

我检查了在WebView中打开的页面,看到了奇怪的请求。它们看起来像是常规的URL,但是使用了applewebdata协议,例如:applewebdata://art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png。太棒了!它不知道相对URL的“基础”协议//art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png,并给它了苹果公司的虚假协议。所以......问题就在这里:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [m_webView loadData:webdata
               MIMEType:@"text/html"
       textEncodingName:@"UTF-8"
                baseURL:nil]; /// WTF!
}

解决方案:在请求开始时,将初始URL保存到m_currentPageUrl中,然后将其传递到目标位置即可。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接