2015-11-03 94 views
1

我工作的一个项目,我想在互联网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)) 
     } 

但这似乎并没有工作。

回答

2

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> 
+0

这是否会导致苹果拒绝的应用程序? –

+0

如果你有正当理由这样做,你应该没问题。但是,如果你正在加载的域提供HTTPS,你应该明确地使用https:// url – joern

+0

我会试着看看会发生什么!非常感谢你! –

1

由于joern说,此安全更新需要所有的请求通过HTTPS,如果你不想覆盖它。

因此,基本的快速解决方案就是将链接改为https。

因此,像这样:

if let url = NSURL(string: "https://google.com") { 
     webView.loadRequest(NSURLRequest(URL: url)) 
    } 
0

试试下面的代码:

let url = "http://google.com" 
let requestURL = NSURL(string:url) 
let request = NSURLRequest(URL: requestURL!) 
WebView.loadRequest(request)