phonegap项目中的WKWebView xhr返回状态0和readyState = 4

时间:2016-04-22 16:17:00

标签: ios cordova cordova-plugins wkwebview

我正在构建一个Phonegap应用,我为iOS平台安装了插件WKWebView

我现在面临的问题是,当我使用post使用xhr谷歌来获取代码中的访问令牌时,我会xhr返回readyState = 4status = 0

如果我使用相同代码的UIWebView进行测试,一切正常。 Android(没有WKWebView)上的相同代码也正常工作。所以此问题仅在使用iOS

WKWebView上进行

这是帖子:

    var xhr = new XMLHttpRequest();
    var url = "https://accounts.google.com/o/oauth2/token";
    var data = 'code=' + encodeURIComponent(code[1]) +
               '&client_id=' + encodeURIComponent(this.gdrive_client_id) +
               '&client_secret=' + encodeURIComponent(this.gdrive_client_secret) +
               '&redirect_uri=http%3A%2F%2Flocalhost' +
               '&grant_type=authorization_code'
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    xhr.send(data);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            console.log(xhr.status); //Here I get status 0
        }
    };

我正在使用WKWebView版本0.6.4

Phonegap cli版本5.5.2

平台:ios 3.9.2

1 个答案:

答案 0 :(得分:0)

与webview不同,WKWebView实际上尊重跨源请求策略。这实际上更安全,但由于种种原因,这对于phonegap / cordova应用来说是一件麻烦事。有关详细信息,请参阅this issueamongst others