不同的行为 NSAllowsArbitraryLoadsInWebContent IOS 10.1 和 10.2
Different behaviour NSAllowsArbitraryLoadsInWebContent IOS 10.1 and 10.2
在 IOS 10.1 中的 UIWebView
中加载某个 url 时,它在
上失败
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made"
但是相同的 webview 在 iOS 10.2
中加载正常
如果我使用 NSAllowsArbitraryLoads = YES
,我可以在 10.1 和 10.2 中加载 url,但只有在 10.2 中使用 NSAllowsArbitraryLoadsInWebContent = YES
我用 nscurl --ats-diagnostics
测试了 URL,它通过了所有测试
我认为这个问题可能与网页中的 ip 位置验证有关。
10.1 和 10.2 在应用传输安全设置的处理上有区别吗?这些有记录吗?
----编辑-----
我通过查看 didFailLoadWithError 中的错误设法解决了我的问题。这告诉我 url 是什么导致了失败。我使用 NSExceptionRequiresForwardSecrecy=NO(使用 ats 诊断确定)
将此 url 添加到我的 Exception Domains
这解决了我的问题,但我仍然想了解 10.1 和 10.2 这两个版本的区别。
是的,即使使用 NSAllowsArbitraryLoadsInWebContent
密钥,iOS 10 的早期版本仍然在 Web 视图中强制执行应用程序传输安全的前向保密要求。那是一个错误,已由 Apple 修复。问题是 iOS 的早期版本带有错误,因此您必须能够处理它,如果您不知道您的 Web 可以导航到的所有可能的 URL,这并不总是可能的。这可能是 Apple 延长了启用应用程序传输安全性和所有提交到 App Store 的应用程序的截止日期的部分原因。
在 IOS 10.1 中的 UIWebView
中加载某个 url 时,它在
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made"
但是相同的 webview 在 iOS 10.2
中加载正常如果我使用 NSAllowsArbitraryLoads = YES
,我可以在 10.1 和 10.2 中加载 url,但只有在 10.2 中使用 NSAllowsArbitraryLoadsInWebContent = YES
我用 nscurl --ats-diagnostics
测试了 URL,它通过了所有测试
我认为这个问题可能与网页中的 ip 位置验证有关。
10.1 和 10.2 在应用传输安全设置的处理上有区别吗?这些有记录吗?
----编辑-----
我通过查看 didFailLoadWithError 中的错误设法解决了我的问题。这告诉我 url 是什么导致了失败。我使用 NSExceptionRequiresForwardSecrecy=NO(使用 ats 诊断确定)
将此 url 添加到我的 Exception Domains这解决了我的问题,但我仍然想了解 10.1 和 10.2 这两个版本的区别。
是的,即使使用 NSAllowsArbitraryLoadsInWebContent
密钥,iOS 10 的早期版本仍然在 Web 视图中强制执行应用程序传输安全的前向保密要求。那是一个错误,已由 Apple 修复。问题是 iOS 的早期版本带有错误,因此您必须能够处理它,如果您不知道您的 Web 可以导航到的所有可能的 URL,这并不总是可能的。这可能是 Apple 延长了启用应用程序传输安全性和所有提交到 App Store 的应用程序的截止日期的部分原因。