我正在构建一个带有phonegap构建的phonegap应用。我的ajax调用在我的浏览器和Ripple Emulator上工作正常,但是一旦我从phonegap构建中获取apk并将其安装在Samsung Galaxy 4上,我就会收到错误。
这是我的ajax电话:
var usuario = $('#usuario').val();
var password = $('#password').val();
$.ajax({
url: 'http://www.example.com/page.php',
jsonp: "callback",
dataType: "jsonp",
data: {nombre:usuario, password:password},
success: function (data) {
console.log(data);
var respuesta = data.resp;
if (respuesta == 0) {
alert('Hubo un error, inténtalo de nuevo');
};
if (respuesta == 1) {
var id = data.id;
window.localStorage.setItem("usuario", id);
window.location.replace('bici.html');
};
},
error: function (xhr, status, error) {
alert(xhr.responseText+status+error);
}
});
我的php标题
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
header("Access-Control-Allow-Headers: content-type");
header("Access-Control-Allow-Headers: NCZ");
header('Content-type: application/json;charset=utf-8');
date_default_timezone_set('America/Mexico_City');
和我的config.xml
- >
<access origin="*"/>
<access origin="http://www.example.com" />
<!-- Added the following intents to support the removal of whitelist code from base cordova to a plugin -->
<!-- Whitelist configuration. Refer to https://cordova.apache.org/docs/en/edge/guide_appdev_whitelist_index.md.html -->
<plugin name="cordova-plugin-whitelist" version="1" />
<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:*" />
答案 0 :(得分:2)
我得到了它的工作!沿着那条线,我只需要添加plig-in。
config.xml上的插件行是
<gap:plugin name="cordova-plugin-whitelist" source="npm"/>
我的html的元标记
<meta http-equiv="Content-Security-Policy" content="default-src data: gap: https://ssl.gstatic.com 'unsafe-eval' *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.example.com; connect-src 'self' http://www.example.com">
答案 1 :(得分:1)
如果您要针对Cordova 5进行构建,您可能需要在PhoneGap应用的HTML文件中的内容安全策略元标记中至少设置一个connect-src,并对其进行配置以便您的应用可以与您的服务器通信。 Raymond Camden有一个很好的blog entry覆盖了这个。
默认情况下,除非您配置内容安全策略,否则Cordova 5将不允许连接。
以下是应用HTML中的示例配置:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://www.example.com">
进一步的文件可以是found here。