Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Richiesta xmlhttprequest con status 0

    Ciao a tutti.
    Ho uno script per un progetto mobile cordova e in una richiesta Xmlhttprequest se emulo su browser tutto funziona bene ma quando emulo con Android mista status 0.
    Non capisco perché su browser funziona be issimo mentre su emulatore Android mi da queato

  2. #2
    Ciao, mi accodo alla segnalazione di techno perchè anche io ho il medesimo problema, riporto a seguire un po' di dettagli.

    In un'applicazione sviluppata in Cordova, che dovrebbe essere installata su palmare con s.o. Android Oreo, devo effettuare una chiamata ad un db MySQL, cosa che ho fatto sfruttando $ajax.

    Il file config.xml è così strutturato:
    codice:
    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.abc.xyz" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
        <name>AppName</name>
        <description>AppDescription</description>
        <author email="email@domain.it" href="https://www.domain.it">
             Author
        </author>
        <content src="index.html" />
        <access origin="http://192.168.2.100"/>
        <access origin="https://192.168.2.100"/>
        <allow-intent href="https://192.168.2.100/*" />
        <allow-navigation href="https://192.168.2.100/*" />
        <allow-intent href="http://192.168.2.100/*" />
        <allow-navigation href="http://192.168.2.100/*" />
        <preference name="android-minSdkVersion" value="27" />
    </widget>
    Mentre il tag meta CSP in index.html è dichiarato così:
    codice:
            <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self' http://192.168.2.100 https://192.168.2.100; media-src 'self'; img-src 'self';">
    Questa invece la chiamata $ajax:
    codice:
                    $.ajax({
                        url: link + "calltodb.php",
                        type: 'POST',
                        data: {"theQuery": id},
                        cache: false,
                        async: false,
                        dataType: "text",
                        crossDomain: true,
                        /*beforeSend: function(xhr) {
                            xhr.setRequestHeader("Access-Control-Allow-Origin", "http://localhost:8000");
                            //xhr.setRequestHeader("Access-Control-Allow-Origin", link + "calltodb.php");
                            return true;
                        },*/
                        success: function(data){
                            alert("success: " + data);
                            if (data != "" && data != "[]" && data != undefined && data != null){
                                aModelli = JSON.parse(data);
                                InitFromDB = true;
                                document.getElementById('ConsoleLog').innerHTML += "<br />aModelli: " + JSON.stringify(aModelli);
                            }
                            else{
                                InitFromDB = false;
                                nTentativi++;
                            }
                        },
                        error: function (xhr, status, error) {
                            alert("xhr.status: " + xhr.status + "; status: " + status + "; error:" + error);
                            InitFromDB = false;
                        }
                    });
    Nella pagina php che risiede lato server ho indicato:
    Codice PHP:
    header("Access-Control-Allow-Origin:http://localhost:8000"); 

    Da browser, con pc connesso alla rete, fila tutto liscio ed ottengo il JSON atteso.
    Da dispositivo Android, connesso alla rete, ottengo lo stesso errore segnalato da techno.

    Sapete indicarmi dove sta l'anomalia ?

    Grazie in anticipo!
    Maurizio

  3. #3
    Ciao, da quello che ho capito dalla versione Cordova 10 in poi ci sono più restrizioni per il Cors di webview di Android c'è la soluzione che ho trovato oggi èd a me funziona perfettamente domani ti posto la soluzione

  4. #4
    Ciao techno, grazie, sarebbe un preziosissimo aiuto! Attendo intrepido...

  5. #5
    Ciao allora questo è quello che ho fatto io per risolvere questo impiccio del CORS
    Nel file config.xml ho questo:

    codice:
    <content src="index.html" />
        <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:*" />
        <preference name="AndroidInsecureFileModeEnabled" value="true" />
        <preference name="AndroidPersistentFileLocation" value="Compatibility" />
        <preference name="scheme" value="https" />
        <preference name="hostname" value="myapp" />
        <preference name="AndroidBlacklistSecureSocketProtocols" value="SSLv3,TLSv1" />
    Nel file .htaccess ho questo:
    codice:
    <IfModule mod_headers.c>
        SetEnvIf Accept application/json API
        Header always set Access-Control-Allow-Origin "*" env=API
        Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT, HEAD" env=API
        Header always set Access-Control-Allow-Headers "Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization" env=API
    </IfModule>
    Ma quello piu importante deivi installare questa plugin:
    cordova-plugin-advanced-http

    Poi puoi anche togliere questo nel file php header("Access-Control-Allow-Origin:http://localhost:8000"); non è necessario

  6. #6
    Ciao techno, ho seguito le tue istruzioni e ti confermo che il problema relativo al CORS si è risolto!
    Grazie infinite!

    Buon lavoro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.