【问题标题】:Cordova Android Update Broke XMLHttpRequest DownloadsCordova Android 更新破坏了 XMLHttpRequest 下载
【发布时间】:2019-12-18 14:18:52
【问题描述】:

我正在使用 Cordova Android。

我更新了我的 Android SDK 并删除然后添加了我的 android 平台。

cordova platform rm android
cordova platform add android

现在我的 XMLHttpRequest 下载脚本不再工作...我不需要脚本帮助,因为我知道它工作正常,因为我在更新之前直接使用它。还检查了我的服务器日志,没有错误。也可以通过浏览器直接访问服务器来访问这些文件。

var dlUrl = "http://myserver.com/" + fileName;
var fileSystem = cordova.file.externalApplicationStorageDirectory;

window.resolveLocalFileSystemURL(fileSystem, function (dir) {
dir.getFile(fileName, {create: true}, function (file) {

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", transferCompleteDb);
oReq.responseType = "blob";
oReq.open("GET", dlUrl, true);
oReq.onload = function (oEvent) {
var blob = oReq.response; 

if (oReq.status == '523' || oReq.status == '404') {
   //...
} else {
if (blob) {
    var writeToFile = saveFile(file, blob);
} else {
//...            
} } };

oReq.onloadend = function () {
   //...
};

oReq.onerror = function (e) {

alert('xml error. status [' + e.target.status + '] [' + oReq.status );
//***
//*** This is where it fails. The error code is just 0, no other info  
//     The request isn't even getting a chance to get a response
//      Cordova is blocking it in some setting              
};

oReq.send(null);
//...

Cordova 正在通过我缺少的某些设置阻止下载...

对于较新版本,我应该在 Android 平台内手动更改任何设置吗?

我的索引头,和更新前没有变化

<meta http-equiv="Content-Security-Policy"
      content="default-src 'self' myserver.com http://myserver.com data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">

我也尝试只对所有值使用 * 来打开它,但没有做任何改变

据我了解,现在应用程序内会提示权限,如果下载需要权限,我应该会收到某种提示。在尝试不再工作的新版本之前,我已经多次完全卸载并删除了旧应用程序的存储空间。

我的其他脚本能够在我存储下载的区域中创建文件夹和文件。所以它只是不能调用的 XMLHttpRequest 代码。

有什么建议吗?花了几天时间与这个作斗争......

谢谢。

【问题讨论】:

    标签: android xml cordova xmlhttprequest phonegap


    【解决方案1】:

    问题解决了……

    Cordova 更新对其进行了更改,使得 XMLHttpRequest 只能处理带有 https 的链接。所以我所有使用 http 的链接都停止工作了,当然也没有出错,因为这就是使用 Cordova 的乐趣。在这个上浪费了一整周。希望这可以帮助有同样问题的人。

    此外,您的服务器实际上不必提供 https...Cordova 很高兴您只需将 https 添加到您的 http 链接,它就可以正常工作。

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 2015-12-28
      • 2018-10-23
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      相关资源
      最近更新 更多