Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)
like image 335
Hugo Fortis Avatar asked Oct 29 '17 02:10

Hugo Fortis


3 Answers

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"];
like image 93
trungduc Avatar answered Oct 26 '22 00:10

trungduc


File Access and universal File access (In case of reading media from device)

[webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
[webView.configuration setValue:@YES forKey:@"allowUniversalAccessFromFileURLs"];
like image 36
Abdul Yasin Avatar answered Oct 26 '22 02:10

Abdul Yasin


For Xamarin.iOS devs:

WKWebViewConfiguration config = webView.Configuration;
config.Preferences.SetValueForKey( FromObject( true ), new NSString( "allowFileAccessFromFileURLs" ) );
config.SetValueForKey( FromObject( true ), new NSString( "allowUniversalAccessFromFileURLs" ) );
like image 33
Jagan Avatar answered Oct 26 '22 02:10

Jagan