我们是一家使用phonegap进行早期构建的小公司,但遭到404错误/ CORS的打击。
我正在将.Net Framework用于我的API-并且CORS已完全设置。
因此,基本上,当我通过phonegap开发工具在桌面上启动我的应用程序时,它可以工作,但是如果我禁用“ CORS”扩展名,它将不会。
但是,当我为IOS和Android构建我的应用程序时,安装过程等正在起作用,但是我的问题是我无法让我的应用程序获得对API的访问权限-它没有命中AJAX调用。 / p>
如果我是对的话,我认为在手机上不需要CORS。
注意:我的API当前正在HTTP而非HTTPS上运行。
CSP :(允许所有操作但仍然不起作用)
“ meta http-equiv =” Content-Security-Policy“ content =” default-src *'unsafe-inline'; style-src'self''unsafe-inline'; media-src *; connect-src *“ /”
CONFIG.XML :(我删除了图标,名称和应用说明。)
<content src="index.html" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="14" />
<plugin name="cordova-plugin-battery-status" source="npm" spec="~1.1.1" />
<plugin name="cordova-plugin-camera" source="npm" spec="~2.1.1" />
<plugin name="cordova-plugin-media-capture" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-console" source="npm" spec="~1.0.2" />
<plugin name="cordova-plugin-contacts" source="npm" spec="~2.0.1" />
<plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" />
<plugin name="cordova-plugin-device-motion" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-device-orientation" source="npm" spec="~1.0.2" />
<plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-file" source="npm" spec="~4.1.1" />
<plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0" />
<plugin name="cordova-plugin-geolocation" source="npm" spec="~2.1.0" />
<plugin name="cordova-plugin-globalization" source="npm" spec="~1.0.3" />
<plugin name="cordova-plugin-inappbrowser" source="npm" spec="~1.3.0" />
<plugin name="cordova-plugin-media" source="npm" spec="~2.2.0" />
<plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-splashscreen" source="npm" spec="~3.2.1" />
<plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.2" />
<plugin name="cordova-plugin-vibration" source="npm" spec="~2.1.0" />
<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" />
</platform>
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
AJAX通话:
function Login() {
var Email = $("#pass").val();
var Password = $("#bruger").val();
$.ajax({
type: 'GET',
url: 'http://myapiserver.com/' + Email + '/' + Password,
success: function (data) {
if (data.ID > 0 && data.Username !== null) {
console.log("", data.Id);
console.log("", data.Username);
window.localStorage.setItem("user", data.Id);
window.localStorage.setItem("namefield", data.Username);
window.location.assign("main.html");
} else {
$("#msg").html("<span style=\"color: black;\" class=\"alert\">Brugeren blev ikke fundet!</span>");
}
}
});
if (window.localStorage.getItem("user")!== null) {
window.location.assign("main.html");
}
}
我一直在阅读有关导致该错误的WebView的信息,但是由于IOS也失败了,所以我不认为这是原因,并且应该在最新的WebView补丁中解决该问题。
我可能需要更新某些SDK或其他内容,但是由于我使用Phonegap工具创建了应用程序,因此我不知道该怎么做。 (可能需要一些帮助)
整个应用程序都可以在浏览器中运行,并且在IOS和Andoid上运行时可以“完成”-但是我真的需要尽快解决这个问题,因为一周内我们会召开投资者会议。
我真的希望有人知道这里发生了什么-预先感谢!
答案 0 :(得分:0)
您绝对必须在myapiserver.com上实现HTTPS,即使是开发也是如此。通过PhoneGap API的iPhone尤其会在不通过HTTPS时阻止对外部URL的请求。我构建了一个PhoneGap应用程序来解决这个确切的问题。您可以尝试将其添加到允许的URL中,但是Apple会在不使用HTTPS且没有真正错误原因的情况下将其阻止。您将需要为该Web服务的SSL和PROD服务器URL添加SSL。我假设Android已遵循套件。