problème requete ajax sous android projet cordova
Bonjour,
je fais des tests car mes requêtes ajax fonctionnent sur mon projet depuis un ordinateur mais pas après compilation avec cordova
J'ai bien entendu écumé google mais je n'ai pas réussi à résoudre mon problème; J'ai activé la white list et ajouté la balise <meta> "ad-hoc" recommandée... je pense avoir un problème de paramétrage, peut être faut il un header particulier au niveau de ma page php ???
le html:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: http://www.monsite.fr 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>Hello World</title>
</head>
<body style="text-align:center;">
<div id="mouch" style="width:80vw; height:40px; line-height:40px; border:solid 1px black;"></div>
<br>
<input id="bout" type="button" value="envoi">
<script type="text/javascript" src="js/index.js"></script>
</body>
</html> |
le xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version='1.0' encoding='utf-8'?>
<widget id="com.filtep.e_simed" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>e_simed</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="http://monsite.fr/*" />
<allow-intent href="http://monsite.fr/*" />
<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>
</widget> |
le JS:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| document.getElementById('bout').addEventListener('touchstart', envoi);
function envoi(){
var xhr=new XMLHttpRequest();
xhr.onreadystatechange = function(){if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
document.getElementById('mouch').innerHTML=xhr.responseText;
};
}
var req="toto=2"
xhr.open('GET','http://www.monsite.fr/test/verif_connect.php?'+req,true);
xhr.send(null);
} |
le PHP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <?php
header('Access-Control-Allow-Origin: *');
echo "message reçu!";
?> |
Votre aide serait la bienvenue car je suis totalement bloqué !
Merci d'avance
Philippe
Exactement le même problème
Bonjour,
Je suis actuellement en train de développer une application avec cordova. J'utilise des requètes xmlhttprequest pour récuperer des donnés d'une base mysql.
Tous fonctionnait pendant un temps puis j'ai surement modifier quelque chose qu'il ne fallait pas et je me retrouve avec le problème suivant : lorsque j'ouvre le projet dans chrome tous fonctionne mais lorsque je compile l'application les requètes ne renvoie rien et je n'arrive pas à trouver d'ou proviens le problème (c'est d'autant plus difficile qu'il n'y a pas de console pour voir les erreures).
J'ai bien fait attention aux Content-Security-Policy :
Code:
<meta http-equiv="Content-Security-Policy" http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'self' http://www.motocuture.com data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;script-src * data: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'"/>
Dans ma page php distante j'ai inséré la ligne suivante :
Code:
header("Access-Control-Allow-Origin: *");
Mon fichier config.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version='1.0' encoding='utf-8'?>
<widget id="fr.IMTAtlantique.BDS" version="1.0.1" android-versionCode="10001" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>BDS</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<access origin="http://motocuture.com*" />
<access origin="http://www.motocuture.com*" />
<access origin="https://motocuture.com*" />
<access origin="https://www.motocuture.com*" />
<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>
<preference name="android-targetSdkVersion" value="31"/>
<icon src="www/img/logo.png" platform="android" width="57" height="57" density="mdpi" />
</widget> |
Et les requêtes sont lancées avec cette fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| function Xhr(name,form = [],type = 'text',Fct = function(a){}){
var startURL = "http://www.motocuture.com/App/BDS/";
var token = window.localStorage.getItem("remember_token");
var Xhr = new XMLHttpRequest();
Xhr.open("POST", startURL+name+".php", true);
Xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
Xhr.send("form="+JSON.stringify(form)+"&token="+token);
Xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
console.log(this);
if (type == 'text') {
var Response = this.responseText;
}else if(type == 'array'){
var Response = JSON.parse(this.responseText);
}
try{
Fct(Response);
} catch (error){}
}
}
} |
Exemple :
Code:
Xhr('campagne',[],'text',InsertPage('campagne',CampagneInitialize));
Voilà, j'ai essayé beaucoup de truc pour résoudre le problème sans succès je suis à cours d'idée.
Si quelqu'un arrive à résoudre mon problème ça serait vraiment super, merci.