Search code examples
iosswiftuiwebviewwkwebview

iOS - WKWebView Cross origin requests are only supported for HTTP


Hi i'm trying to load an html that is in the main Bundle with WKWebView this worked perfectly with UIWebView but now i have an error, the files in the html does not load send an error in the console : "XMLHttpRequest cannot load"

Consola form simulator

Simulator

this is an example http://proyectoshm.com/esferas/dosaguas/dosaguascitta.html of the content embedded.

My code:

let folder = "maquetas/esferas/\(esfera)"

let resourcePath = Bundle.main.resourcePath
let subdir = URL(fileURLWithPath:resourcePath!).appendingPathComponent(folder, isDirectory: true)

guard let path = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: folder) else {
    print("no se encontró path")
    return

}
print(subdir.path)


let url = NSURL.fileURL(withPath: path)
 print(url.path)
 vistaweb = WKWebView(frame: self.view.frame)

vistaweb.loadFileURL(url, allowingReadAccessTo: subdir)

self.view.addSubview(vistaweb)

Solution

  • To resolve it, you need to turn allowFileAccessFromFileURLs on from WKPreferences

    Swift

    webView.configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
    

    Objective-C

    [webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];