【Swift】 WKWebView https 加载不受信任的站点

  公司要对接一个第三方平台,然后就有了一个可奇葩的逻辑,用户填写完相关信息后,点击提交,然后服务器返回一个网页的源代码……需要用WebView加载这个网页。

实现的时候发现,我自己写的简单的网页源码可以加载,但是服务器返回的就是无法加载。后来把源码保存成文件以后,用浏览器打开发现,该网页链接的站点是一个不受信任的站点,应该是因为服务器证书无效而不受信任。

self.wkWeb.navigationDelegate = self

// 实现以下代理方法
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
     let cred = URLCredential.init(trust: challenge.protectionSpace.serverTrust!)
     completionHandler(.useCredential, cred)
}

  有朋友说还需要在 plist 文件中设置:

  将Allow Arbitrary Loads in Web Content 置为 YES,或者将Allow Arbitrary Loads置位YES

  但是我实际测试以后发现,不设置也可以打开,可能是具体情况不同的原因吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swift 中使用 WKWebView 加载绝对路径的 CSS 样式表,可以通过以下步骤来实现: 1. 将 CSS 文件添加到您的项目中。可以拖放 CSS 文件到项目导航器中的适当位置,确保将其添加到正确的目标。 2. 在您的 ViewController 类中,导入 WebKit 框架: ```swift import WebKit ``` 3. 创建一个 WKWebView 的实例,并将其添加到您的视图层次结构中: ```swift let webView = WKWebView(frame: view.bounds) view.addSubview(webView) ``` 4. 使用 `fileURLWithPath` 方法获取 CSS 文件的绝对路径,并通过 `loadFileURL` 方法加载本地 HTML 文件: ```swift if let cssURL = Bundle.main.url(forResource: "style", withExtension: "css") { let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") // index.html 是您的 HTML 文件名 let htmlURL = URL(fileURLWithPath: htmlPath!) webView.loadFileURL(htmlURL, allowingReadAccessTo: cssURL) } ``` 这里假设您的 CSS 文件名为 "style.css",HTML 文件名为 "index.html"。确保将这些文件添加到您的项目中,并指定正确的文件名和扩展名。 5. 在 HTML 文件中,使用 `<link>` 标签将 CSS 样式表链接到页面上。在 `<head>` 标签内,添加以下行: ```html <link rel="stylesheet" type="text/css" href="style.css"> ``` 确保将 "style.css" 替换为您的 CSS 文件名。 这样,当 WKWebView 加载 HTML 文件时,它会自动加载链接的 CSS 样式表并应用于页面。 请注意,确保 CSS 文件和 HTML 文件位于正确的位置,并在项目目标的 Build Phases 中将它们添加到 "Copy Bundle Resources" 列表中,以便在构建时正确复制到应用程序包中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值