swift - 将 Internet url 加载到 Webview

标签 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))
        }

但这似乎没有用。

最佳答案

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

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

请注意,这会规避 ATS 附带的所有安全要求。 仅当确实没有其他方法时,才应在生产中使用它。如果您只访问 1 个非 HTTP url,则只能为该 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>

关于swift - 将 Internet url 加载到 Webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497266/

相关文章:

ios - 如何结束开关盒

php - 从搜索查询中删除 "www."

android - 在 webview 中自动播放视频

javascript - 在 Android 上的 WebView 中注入(inject) JavaScript 文件

ios - 如何使用@objc 标签传递 swift 枚举

ios - 页面 View Controller 隐藏指示点并停在最后一页(无法返回)

ios - 在 Swift 中将 CLLocationCoordinate2D 转换为 CLLocation 时出错

c# - .NET 的替代方案提供了关于 uris 和 url 的 api

html - 框架集导致 URL 在浏览页面时不会更改。有办法解决这个问题吗?

Android WebView 不渲染网页