在iOS 9中禁用应用内浏览器的ATS?
iOS 9引入了App Transport Security(ATS)来鼓励使用安全连接。
这很好,但如果我的应用程序有一个内置的Web浏览器,用户应该能够用来连接到任何网站? 例如,Facebook应用程序允许故事包含到外部网站的链接。 当用户点击这样一个链接,而不是启动Safari,它启动一个应用程序内的浏览器。
如何在不启用全局NSAllowArbitraryLoads标志的情况下获得相同的行为?
我希望强制执行https使用的所有好处,但是希望在我的内部浏览器中禁用此检查。 在一个理想的世界里,苹果允许我在UIWebView上指定一个属性来允许它加载不安全的URL,而不是全部或者全部。 我无法将每个域名列入白名单,因为我不知道我的用户将加载哪些url。 我正在寻找一个与iOS 8兼容的解决scheme。
在这种情况下,您需要通过将NSAllowsArbitraryLoads
设置为true来禁用ATS。 如果您具有可以支持HTTPS的特定URL(例如您在UIWebView
之外的应用中使用的服务器或API服务器),则可以创build一个例外,并将NSExceptionsAllowsInsecureHTTPLoads
设置为false
而不是启用NSAllowsArbitraryLoads
,更安全的解决scheme是有条件地使用 SFSafariViewController,它允许任意加载。
如果该类存在,然后呈现它,否则,呈现您自己的UIViewController(其中包含一个UIWebView)。
UIViewController *webBrowser; if ([SFSafariViewController class] != nil) { webBrowser = [[SFSafariViewController alloc] initWithURL:url]; } else { webBrowser = [[ABCWebBrowserController alloc] initWithURL:url]; } [self presentViewController:webBrowser animated:YES completion:nil];
- 使用NSURLConnection连接到具有自签名证书的https时,kSecTrustResultRecoverableTrustFailure
- 从https链接获取图片
- 使用自签名证书在iOS 9中制作HTTPS请求
- 我如何configurationWireshark来查看HTTPSstream量?
- NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)iOS
- 在UIWebView中加载HTTPSurl
- 在iOS应用程序中从http切换到https会在发布时引发出口符合性问题
- 如何使用iOS 7的NSURLSession接受自签名的SSL证书
- HTTPS请求无法validationiOS Safari上的证书