【发布时间】:2016-01-18 21:52:27
【问题描述】:
我创建的应用程序不适用于 iOS 9。
import UIKit
class WebViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView!
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view.
let requestURL = NSURL(string:"http://stackoverflow.com")
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request)
webView.delegate = self
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func webViewDidStartLoad(webView: UIWebView)
{
print("Load started")
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
}
func webViewDidFinishLoad(webView: UIWebView)
{
print("Load finished")
UIApplication .sharedApplication().networkActivityIndicatorVisible = false
}
func webView(webView: UIWebView, didFailLoadWithError error: NSError?)
{
print("Error = ", error)
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
{
print("URl ", request.URL?.absoluteString)
return true
}
}
显示此消息。
2015-10-20 14:46:29.976 WebViewDemo[2802:84627] 加载 URL :https://stackoverflow.com/ 2015-10-20 14:46:30.041 WebViewDemo[2802:84745] App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。暂时的 可以通过应用程序的 Info.plist 文件配置异常。 2015-10-20 14:46:30.160 WebViewDemo[2802:84627] 加载失败 错误 :Error Domain=NSURLErrorDomain Code=-1022 "资源可以 未加载,因为应用程序传输安全策略需要 使用安全连接。” UserInfo={NSUnderlyingError=0x7fedabe113b0 {错误 Domain=kCFErrorDomainCFNetwork 代码=-1022 "资源不能被 加载,因为应用程序传输安全策略需要使用 安全连接。” UserInfo={NSErrorFailingURLStringKey=https://stackoverflow.com/, NSLocalizedDescription=资源无法加载,因为 应用传输安全策略需要使用安全的 连接。,NSErrorFailingURLKey=https://stackoverflow.com/}}, NSErrorFailingURLStringKey=https://stackoverflow.com/, NSErrorFailingURLKey=https://stackoverflow.com/, NSLocalizedDescription=资源无法加载,因为 应用传输安全策略需要使用安全的 连接。}
【问题讨论】:
-
在 IOS 9 Nd 之后我们需要在 Info.Plist 中添加 NSAppTransportSecurity 打开 Info.Plist 作为源代码并复制粘贴到最后。
NSAppTransportSecurity NSAllowsArbitraryLoads -
我不会说这需要完成。理想情况下,您应该尽可能尝试使用安全连接。即 HTTPS 而不是 HTTP。
-
也是导致此错误的相同代码吗?因为该错误引发了加载 Stack Overflow 的错误,而不是您的代码中的 Google。因此,对于此示例(基于您的错误),请使用
https://stackoverflow.com,因为 Stack Overflow 确实支持 HTTPS 连接。