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

WKWebView loading html code instead of contents (iOS)

我正在尝试加载以下 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)

但是,它只加载代码:

我不确定为什么会这样。这个文件需要下载到本地再显示吗?

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

这个有效:

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")
    }
}