J'ai cherché des heures sur cette question, mais je ne trouve toujours pas de solution à ce problème.
Je suis en train de développer une application Cordova (essentiellement HTML/JS) Ainsi, l'application fonctionne sur mobile à partir du navigateur et j'ai des difficultés à envoyer une demande ajax à une API: https://developer.riotgames.com/ Mais disons que je veux juste avoir la page Google.
Comment est-ce que je fais cela, est-ce même possible? Voici un exemple simple:
$.ajax({
type: "GET",
url: "https://google.com",
dataType: "text",
success: function(response){
alert("!!!");
},
error: function(error){
alert("...");
}
});
Je reçois la même erreur encore et encore:
XMLHttpRequest ne peut pas charger https://google.com/ . Non L'en-tête 'Access-Control-Allow-Origin' est présent sur le .__ demandé. Ressource. L'origine 'null' n'est donc pas autorisée
L'origine 'null' est parce que je lance le code depuis: file:///D:/Projets/LoL/www/index.html
et que le navigateur bloque, mais cela ne fonctionne pas aussi bien si je désactive la sécurité avec --disable-web-security
Et bien sûr, je n'ai pas accès au serveur que je veux rejoindre.
Merci beaucoup pour votre aide !
Vous avez besoin du plugin Cordova Liste blanche: https://cordova.Apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ .
Avoir ceci dans config.xml:
<access Origin="*" />
<allow-navigation href="*"/>
Et avoir la méta Content-Security-Policy dans index.html. Quelque chose comme:
<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:">
J'ai ajouté ce qui suit dans le serveur noeud js qui résout mon problème;
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
Cela peut être utile si vous utilisez nodejs.
Merci