2 votes

L'application Cordova ne peut pas faire de demande CORS lors de la première exécution.

J'ai un problème avec Cordova et (peut-être ?) cordova-plugin-whitelist depuis hier et je n'arrive pas à trouver de solution, alors je suis ici, à la recherche de votre aide. Je vais faire de mon mieux pour tout expliquer.

Contexte

Je travaille dans une entreprise informatique et nous avons quelques applications développées à l'aide de la plateforme Cordova. Hier, j'ai installé une application sur mon appareil et j'ai obtenu les erreurs suivantes :

Access to XMLHttpRequest at 'http://valid-url/' from origin 'file://' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    Uncaught (in promise) Error: Request has been terminated
Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.
    at Request.push../node\_modules/superagent/lib/client.js.Request.crossDomainError (client.js:621)
    at XMLHttpRequest.xhr.onreadystatechange (client.js:705)

Ces erreurs ne me permettent pas de faire une demande au serveur. Mais il y a une chose curieuse : Cela se produit uniquement lorsque je lance l'application pour la première fois. ou quand je supprimer la base de données ; si je ferme l'application et la relance, elle fonctionne parfaitement. Autre chose de curieux : cela se produit avec toutes nos applications, et certaines d'entre elles n'ont pas reçu de nouveau patch ou de changement depuis des mois, alors... comment cela peut-il arriver ? J'ai pensé à un changement sur Chromium, mais la version sur mon appareil est plus ancienne que la version actuelle.

Je sais que j'ai besoin de cordova-plugin-whitelist pour faire des requêtes, je l'ai déjà installé sur le serveur de l'entreprise. 1.3.4 et avec cette configuration sur config.xml (sur une des applications) :

    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />

Ma version actuelle de cordova-Android est 7.0.0 - J'ai déjà essayé de rétrograder cordova-Android et la liste blanche des plugins à 6.4.0 et 1.3.3 respectivement, mais cela n'a pas fonctionné.

Je soupçonne que le problème se situe dans Android lui-même ou dans cordova-plugin-whitelist, mais rappelez-vous : il est parti de rien, sans aucun changement dans les dépôts de code ou de nouvelles constructions - cela me rend fou.

Quelqu'un peut-il me donner du feu ?

Merci !

1voto

Torabu Points 26

Nous avons le même problème dans mon entreprise. En cherchant, nous avons découvert ce bogue Chromium dont la correction a été intégrée dans la version 77 :

https://bugs.chromium.org/p/chromium/issues/detail?id=991107

Si vous utilisez Chromium 76, cela pourrait être la source de vos problèmes. Malheureusement, il n'est pas possible de le résoudre de notre côté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X