2015-11-03 93 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)