WKWebView XMLHttpRequest无法加载资源

时间:2018-02-14 13:03:51

标签: javascript ios swift xmlhttprequest wkwebview

大家好!

我有WKWebView,它使用js加载本地XML。

function loadSegment(url,uuid) {
    let xhr = new XMLHttpRequest();
    xhr.onerror = () => rejected();
    xhr.onabort = () => rejected();
    xhr.ontimeout = () => rejected();
    xhr.onload = () => xhr.status === 200 ? handleSegment(url, uuid, xhr.response) : rejected();
    xhr.open("GET", url);
    xhr.responseType = "arraybuffer";
    xhr.send(null)
}

function handleSegment(url,uuid,res) {
// url, uuid, res to json
// webkit.messageHandlers.LoadHandler.postMessage(<#JSON#>)
}

function rejected() {

}

成功加载WebView后,我评估文件

webView.evaluateJavaScript(script, completionHandler: { (response, error) in
// Error handling
}

脚本成功评估。但在Safari Inspector中,我看到以下错误

[Error] Failed to load resource: The network connection was lost. (05.ts, line 0)
[Error] Failed to load resource: A server with the specified hostname could not be found. (05.ts, line 0)

它尝试执行以下网址请求:http://edge.flowplayer.org/cilla_black_bean_sauce/1/216p-lo/00.ts

最奇怪的是它在模拟器上的完美运作。

有人遇到类似的问题吗?

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,并使用webview配置对其进行了修复。只需在您的viewDidLoad()或类似的代码中使用下面的代码(如果您使用的是Swift):

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

答案 1 :(得分:0)

根据@Dion的答案,用于Obj C

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@true forKey:@"allowFileAccessFromFileURLs"];
self.wkWebView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];