加载互联网网址网页视图
问题描述:
我工作的一个项目,我想在互联网URL
加载到我的UIWebView
加载互联网网址网页视图
我已经成功地加载本地存储的HTML文件是这样的:
if let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html") {
webView.loadRequest(NSURLRequest(URL: url))
}
所以基于此我试图这样做:
if let url = NSURL(string: "http://google.com") {
webView.loadRequest(NSURLRequest(URL: url))
}
但这似乎并没有工作。
答
Apple在iOS9中引入了App Transport Security。这是一项新的安全功能,可在处理Web请求时执行某些安全措施。例如,它不允许通过HTTP发送请求,因为它只允许HTTPS请求。好消息是,你可以通过添加以下内容到项目的Info.plist文件来覆盖这些安全要求:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
要知道,这种规避与ATS来所有的安全要求。 只有在没有其他方法的情况下,您才应该在生产中使用它。如果你只访问1个非HTTP URL,您可以禁用ATS为只有1个域:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
答
由于joern说,此安全更新需要所有的请求通过HTTPS,如果你不想覆盖它。
因此,基本的快速解决方案就是将链接改为https。
因此,像这样:
if let url = NSURL(string: "https://google.com") {
webView.loadRequest(NSURLRequest(URL: url))
}
答
试试下面的代码:
let url = "http://google.com"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
WebView.loadRequest(request)
这是否会导致苹果拒绝的应用程序? –
如果你有正当理由这样做,你应该没问题。但是,如果你正在加载的域提供HTTPS,你应该明确地使用https:// url – joern
我会试着看看会发生什么!非常感谢你! –