WKWebView加载HTML代码而不是内容(iOS)

时间:2018-08-08 18:14:31

标签: ios wkwebview

我正在尝试加载以下html文件: https://dev-attachments-public.clickup.com/d23cdacd-510c-440e-818f-1e0f4d1a10bd/Email.html进入我的WKWebView,执行以下操作:

let targetURL = NSURL(string: htmlFile)
let webView = WKWebView(frame: paddingView.bounds)
let request = NSURLRequest(url: targetURL as URL)
webView.load(request as URLRequest)

但是,它仅加载代码:

enter image description here

我不确定为什么会这样。我需要在本地下载该文件然后显示吗?

2 个答案:

答案 0 :(得分:1)

请注意,在桌面上单击该链接也会导致文件下载,而不是显示在Web浏览器中。查看请求的标头,您的服务器当前正在以Content-Type的形式发送其application/octet-stream。这告诉浏览器(例如WKWebView)该文件是原始数据,应如此下载,显示和处理。相反,您应该将Content-Type标头发送为text/html,该标头告诉浏览器它应该呈现HTML并将其显示为网页。此外,您可能应该删除Content-Disposition标头,以使其成为默认内联显示为网页

答案 1 :(得分:0)

这有效:

var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as [AnyObject]
let filePath: String = "\(paths[0])/\("index.html")"

if let url: NSURL = NSURL(string: htmlFile) {

    do {
        let urlData: NSData = try NSData(contentsOf: url as URL)
        urlData.write(toFile: filePath, atomically: true)

        webView.load(URLRequest(url: NSURL.fileURL(withPath: filePath)))

    } catch {
        print("Error:  Could not fetch fetchedResultsController")
    }
}