【发布时间】:2023-03-27 15:45:02
【问题描述】:
我们的 iOS 应用程序使用自定义协议 (NSURLProtocol) 来直接管理加载 UIWebview 所需的某些数据。这在带有 XCode 7 的 iOS 9 之前一直运行良好。
现在,由于主站点是使用HTTPS加载的,所以UIWebview在引用自定义协议资源时会抛出错误,因为它认为它不安全(其实不是,我们使用SSL加载它,只是不是https:/ /)。该应用程序已经使用“允许任意加载”构建,因为我们还有其他一些需要这样做的东西,而且我原以为这继承了 NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads,这似乎正在与它发生冲突,但谁知道呢。
有什么方法可以让 iOS 9 相信我们的自定义协议可以从 HTTPS 访问?注意 - 我们不在 UIWebview 中使用 iframe 或类似的东西 - 这些资源是使用 Ajax/XHR 请求的,并且应用程序的 NSURLProtocol 被调用并接管加载数据并返回响应。
自定义方案也列在 URL 类型中,但这似乎并没有改变任何行为(进出,同样的错误)。这是具体的错误:
[阻止]https://example.com/path/redacted 的页面不允许显示来自 mycustomprotocol://different.example.com/path/redacted 的不安全内容。
编辑: 下载了 Xcode 6.4,重新构建了应用程序,它似乎在 iOS 9.x 上运行良好,自定义协议没有问题。 显然,这是不是一个长期的解决方案。希望有人仍然对如何在 Xcode 7+ 中解决有所了解。
【问题讨论】:
-
你解决了问题还是找到了有用的东西?
标签: https uiwebview ios9 nsurlprotocol