将网址加载到Webview

时间:2015-11-03 10:52:32

标签: swift url webview

我正在开展一个项目,我想将互联网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))
        }

但这似乎不起作用。

3 个答案:

答案 0 :(得分:2)

Apple推出了iOS9 App Transport Security。这是一种新的安全功能,可在处理Web请求时强制执行某些安全实践。例如,它不允许通过HTTP发送请求,因为它只允许HTTPS请求。好消息是,您可以通过将其添加到项目的Info.plist文件来覆盖这些安全要求:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

请注意,这会绕过ATS附带的所有安全要求。 只有在没有其他方法的情况下才应该在生产中使用它。如果您只访问1个非HTTP网址,则只能为该1个网域禁用ATS:

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

答案 1 :(得分:1)

正如joern所说,如果你不想覆盖它,安全更新要求所有请求都是通过HTTPS。

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

这样的事情:

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

答案 2 :(得分:0)

尝试以下代码:

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