我正在构建一个混合应用程序,我一直在尝试使用它之前测试本地图像是否存在于本地,但是由于出现CORS错误,我被困在iOS的wkwebview上。
var loadImage = function(urlImage) {
var deferred = $q.defer();
var xhr = new XMLHttpRequest();
xhr.open('HEAD', urlImage, true);
xhr.onload = function(e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
deferred.resolve(true);
} else {
deferred.resolve(false);
}
}
};
xhr.onerror = function(e) {
deferred.resolve(false);
};
xhr.send();
return deferred.promise;
};
我遇到以下错误:
XMLHttpRequest无法加载“”。跨源请求仅受HTTP支持。
我宁愿不使用插件来绕过此错误,有没有办法做到这一点?
谢谢。
答案 0 :(得分:0)
我认为您应该在WKWebView中添加一个userContentController,然后从Javascript代码中发布一条消息,以使其在应用程序本机环境中处理请求。
将此添加到viewDidLoad
yourWebView.configuration.userContentController.add(self, name: "callbackHandler")
然后
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "callbackHandler" {
let content = message.body as! String
...
因此您可以使用来与应用通信
webkit.messageHandlers.callbackHandler.postMessage('a message');