gpt4 book ai didi

ajax - Ionic 3 Cordova ajax 调用在 Windows 10 (UWP) 上失败

转载 作者:行者123 更新时间:2023-12-04 20:43:39 25 4
gpt4 key购买 nike

我之前曾尝试问过这个问题,但没有得到真正的答案,现在已经苦苦挣扎了一个多月。

我只是无法让我的 ajax 调用在为 Windows 10 UWP 构建的 Ionic 3 Cordova 应用程序上工作。他们可以访问本地主机,但不能访问任何外部连接。

该应用程序在 Android 和 iOS 上都运行良好。

我正在尝试在我的开发机器上进行本地测试。我使用(购买的)证书对应用程序进行签名,安装此证书,为 Windows 构建应用程序,并能够打开构建的 CordovaApp.Windows10_1.0.1.1_x86.appxupload,然后双点击嵌入的CordovaApp.Windows10_1.0.1.1_x86.appx文件安装,安装成功。安装表明该应用程序需要访问互联网。

config.xml 中,我有以下标签,如其他地方所建议的...

 <allow-navigation href="*" />
<access origin="*" />

但是,当我运行时,http.get 调用只返回 0,没有其他信息。我可以在 Visual Studio 中运行,并查看返回的错误对象,除了这个 0 返回之外,没有得到更多信息。

我已经运行了 fiddler,按照说明启用了 https 解密 here , 但我在响应 header 中看到的是

HTTP/1.0 200 Connection Established
FiddlerGateway: Direct
StartTime: 13:44:21.686
Connection: close

主视图中的结果实际上显示了 200,所以我认为这没有显示任何真实的内容。

我完全不知所措。我没有别的地方可以搜索。我可能缺少什么?

当我像这里那样旁加载应用程序时,我应该能够在 Windows 10 机器上使用外部 ajax 吗?我还没有在商店里试过,因为我不想上传,直到我知道它有效。

非常欢迎任何建议。肯定有人有 Ionic 3 应用程序访问外部 ajax 工作吗?

在此先感谢您的帮助

[更新 1]

如果我在同一台机器上运行应用程序,只使用 Ionic 服务(因此它只在浏览器中运行而不是托管在 UWP 中),ajax 调用也可以正常工作。

[更新 2]

我现在已经使用 Visual Studio 模板创建了一个 Cordova 应用程序,因此无需考虑所有其他框架。

我使用 vanilla JavaScript 进行休息调用...

 document.addEventListener('deviceready', callUrl, false);

function callUrl() {

console.log('callUrl');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://myserveraddress.com/myapp/testroute');
xhr.send(null);

xhr.onreadystatechange = function () {
var DONE = 4; // readyState 4 means the request is done.
var OK = 200; // status 200 is a successful return.
if (xhr.readyState === DONE) {
if (xhr.status === OK)
console.log(xhr.responseText);
} else {
console.log('Error: ' + xhr.status);
}
}
};

我在调试器中运行它,甚至在这里我得到一个错误(状态代码为 0)。

当我打开构建包并查看 cordova_plugins.js 文件时我注意到的另一件事..

我的 Ionic 应用程序具有以下...

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"id": "cordova-plugin-console.logger",
"file": "plugins/cordova-plugin-console/www/logger.js",
"pluginId": "cordova-plugin-console",
"clobbers": [
"cordova.logger"
]
},
{
"id": "cordova-plugin-console.console",
"file": "plugins/cordova-plugin-console/www/console-via-logger.js",
"pluginId": "cordova-plugin-console",
"clobbers": [
"console"
]
},
{
"id": "cordova-plugin-device.device",
"file": "plugins/cordova-plugin-device/www/device.js",
"pluginId": "cordova-plugin-device",
"clobbers": [
"device"
]
},
{
"id": "cordova-plugin-device.DeviceProxy",
"file": "plugins/cordova-plugin-device/src/windows/DeviceProxy.js",
"pluginId": "cordova-plugin-device",
"merges": [
""
]
},
{
"id": "cordova-plugin-splashscreen.SplashScreen",
"file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
"pluginId": "cordova-plugin-splashscreen",
"clobbers": [
"navigator.splashscreen"
]
},
{
"id": "cordova-plugin-splashscreen.SplashScreenProxy",
"file": "plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js",
"pluginId": "cordova-plugin-splashscreen",
"runs": true
},
{
"id": "cordova-plugin-statusbar.statusbar",
"file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
"pluginId": "cordova-plugin-statusbar",
"clobbers": [
"window.StatusBar"
]
},
{
"id": "cordova-plugin-statusbar.StatusBarProxy",
"file": "plugins/cordova-plugin-statusbar/src/windows/StatusBarProxy.js",
"pluginId": "cordova-plugin-statusbar",
"runs": true
},
{
"id": "ionic-plugin-keyboard.KeyboardProxy",
"file": "plugins/ionic-plugin-keyboard/src/windows/KeyboardProxy.js",
"pluginId": "ionic-plugin-keyboard",
"clobbers": [
"cordova.plugins.Keyboard"
],
"runs": true
}
];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-console": "1.0.5",
"cordova-plugin-device": "1.1.4",
"cordova-plugin-splashscreen": "4.0.3",
"cordova-plugin-statusbar": "2.2.2",
"cordova-plugin-whitelist": "1.3.1",
"ionic-plugin-keyboard": "2.2.1"
};
// BOTTOM OF METADATA
});

现在,我注意到 module.exports.metadata 中的每个插件在 module.exports 中也有一个条目,除了 cordova-plugin-whitelist!

如果我为在 VS 中创建的 Corvoda 应用程序打开同一个文件,我会看到以下内容...

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-whitelist": "1.2.2"
};
// BOTTOM OF METADATA
});

所以这对于白名单插件也没有别的了

这里会不会少了什么??会不会是这个白名单插件没有正确安装?

最佳答案

我遇到过类似的情况,我的 ajax 调用在 TEST 中运行良好,但当我转到 PROD 时,它们会失败。

最终找到的答案是我试图访问的服务器上缺少中间证书。 TEST 有证书,PROD 没有。

希望对您有所帮助。

关于ajax - Ionic 3 Cordova ajax 调用在 Windows 10 (UWP) 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45809788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com