ajax - Cordova:无法在“XMLHttpRequest”上执行“发送”
问题描述
我正在尝试恢复我的 Cordova 应用程序,因为上次它工作时我的服务器已过期,我不得不重建数据库并加载我的 php 接口,但它与以前托管的域不同。
因此,在服务器上的所有工作都完成并且一切正常之后,我更改了我的应用程序中的所有链接以及对外部源的权限,但是当我运行应用程序时,当它遇到第一个 getJSON 调用时,它会给出以下错误在 JavaScript 控制台上:
无法加载资源jquery-3.2.1.js (9566,10)
在输出流上它说:
E chromium: [ERROR:sync_resource_handler.cc(63)] 跨域重定向被拒绝
我添加了以下错误函数以更好地了解错误:
console.log(xhr.status + status + error);
并在控制台上得到了这个:
0errorNetworkError:无法在“XMLHttpRequest”上执行“发送”:无法加载“ https://www.squirreldevelopment.it/notebet/request_utilities.php ”。
我在我的 config.xml 中安装了白名单插件和以下内容:
<plugin name="cordova-plugin-whitelist" spec="~1.3.3" />
<allow-navigation href="https://squirreldevelopment.it/notebet/*" />
<allow-intent href="https://squirreldevelopment.it/notebet/*" />
<access origin="https://squirreldevelopment.it/notebet/*" />
我也尝试了 href="*" 但没有成功。
在我的 html 头中
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; connect-src 'self' https://www.squirreldevelopment.it/notebet/ 'unsafe-inline' 'unsafe-eval'">
在 php 文件的顶部,我有:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
header('Content-Type: application/json');
header('HTTP/1.1 200 OK');
我检查了生成的清单,并且有访问互联网的权限
我确实尝试重新安装白名单插件但没有成功。
这是我进行调用的原始代码:
$.getJSON('https://www.squirreldevelopment.it/notebet/request_request_utilities.php', function (result) {
console.log("success");
$.each(result, function (i, field) {
console.log("reading request_utilities.php");
status = field.status;
val_aggiorna = field.aggiorna;
console.log("ended reading request_utilities.php");
statusResult = result;
});
if (status == 0) {
errore('Error loading data');
} else {
console.log("status ok");
console.log("requestData");
requestData(urls);
}
});
这是我现在用来调试的代码(它们得到相同的错误):
$.ajax({
crossDomain:true,
dataType: "json",
url: "https://www.squirreldevelopment.it/notebet/request_utilities.php",
success: function (result) {
console.log("success");
$.each(result, function (i, field) {
console.log("reading request_utilities.php");
status = field.status;
val_aggiorna = field.aggiorna;
console.log("ended reading request_utilities.php");
statusResult = result;
});
if (status == 0) {
errore('Error loading data');
} else {
console.log("status ok");
console.log("requestData");
requestData(urls);
}
},
error: function (xhr, status, error) {
console.log(xhr.status + status + error);
}
});
我没有更多关于如何解决这个问题的线索。希望有人可以提供帮助。
解决方案
请尝试 CSP,例如:
<meta http-equiv="Content-Security-Policy"
content="
default-src 'self' data: gap:;
connect-src 'self' https://www.squirreldevelopment.it;
script-src 'self' data: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline';
style-src 'self' 'unsafe-inline';
media-src *;
">
我将从 config.xml 设置开始,例如:
<access allows-arbitrary-loads-for-media="true" allows-arbitrary-loads-in-web-content="true" allows-local-networking="true" origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-navigation href="*"/>
如果你让它根据你的需要工作狭窄的访问。
推荐阅读
- angular - Z-index 不在 iphone 上的 ion-card 中输入
- mathematical-optimization - CPLEX shows wrong "Objective" and "BestBound"
- html - 显示文章内联块时出现问题
- python - How do I remove all trailing characters from a dataframe that are equal to a letter 'h'
- google-cloud-platform - 从 AppSheet by Google 向 IB API 提交交易订单延迟 6 分钟
- javascript - 如何添加先前存在的数组值然后应用拼接方法?
- java - Apache Camel's load balanced route doesn't work if one of the endpoint stops connecting
- kotlin - How to show "Toast" after scrolling down a certain amount in Kotlin
- opencv - How does the "compressed form" of `cv::convertMaps` work?
- javascript - 按下 OnClick 按钮后显示 HTML 块的我的 JS 函数有问题