Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Ajax e sicurezza

  1. #1

    Ajax e sicurezza

    Salve ho 1 problema con Ajax. Provo ad essere piu chiaro possibile

    Ho una pagina html che include uno script javascript remoto.

    Nello script ci sono 2 funzioni ajax che caricano rispettivamente le province d'italia a seconda della regione selezionata e le città d'italia a seconda della provincia selezionata.

    In pratica il processo è semplice. Da un menu a discesa si seleziona una regione, sull'evento onchange di questo menu viene invocata la funziona di caricamento delle province (province nel codice allegato sotto) che carica un secondo menu a discesa.

    Ora il problema è questo. Ho provato lo script in locale e internet explorer dopo la selezione della regione mi dice che il contenuto della pagina sta per essere inviato a etc etc e mi chiede di confermare, dopo questa conferma vedo le province che popolano il secondo menu a discesa. Per quanto sgradevole il messaggio comunque pare funzionare. Quando vado a pubblicare il tutto on line (su un sito non locale quindi) non funziona e non mi viene inviato nessun messaggio di notifica. Quale potrebbe essere il problema?

    Do una indicazione. Non è possibile che il client web consenta l'inclusione dello script remoto ma blocchi le successive chiamate a url diverse da quelle di origine?


    Per spiegare quanto ho detto allego un frammento dello script remoto

    Lo script vieni incluso nella pagina in questo modo
    <script src="http://www.miosito.it/mioscript.php">
    </script>



    Il frammento di codice è il seguente


    var jsUrl="http://www.miosito.it/";


    /*************************************
    Funzione che apre la connessione verso il server
    *************************************/
    var myRequest = null;
    function CreateXmlHttpReq(handler) {
    var xmlhttp = null;
    try {
    xmlhttp = new XMLHttpRequest();

    } catch(e) {
    try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

    } catch(e) {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

    }
    }
    xmlhttp.onreadystatechange = handler;
    return xmlhttp;
    }


    /**********************************************
    Funzione che carica il menu a discesa della pagina chiamante
    **********************************************/
    function caricaProvince() {
    if (myRequest.readyState == 4 && myRequest.status == 200) {

    if (myRequest.responseText!=""){

    document.getElementById('content_provincia').inner HTML = myRequest.responseText;
    } else {
    document.getElementById('content_provinciae').inne rHTML = '';
    }

    }
    }


    /*****************************************
    Funzione che invoca il popolamento del menu a discesa
    *****************************************/
    function province(valoreDefault,idregionel){
    var thisurl;
    myRequest = CreateXmlHttpReq(caricaProvince);
    thisurl=jsUrl+"caricaProvince.php?idregione="+idre gione+"&defaut="+valoreDefault;
    myRequest.open("GET",thisurl); //In questo punto viene invocata l'apertura di una url diversa da quella del client e second me è qui che si blocca il processo
    myRequest.send(null);
    }





    Ringrazio anticipatamente colore che vorranno cimentarsi col problema e propormi qualche soluzione.

    N.B. Ho già provato la soluzione in cui sia pagina html sia script risiedano sullo stesso sito e funziona perfettamente ma per il tipo di progetto che devo fare non posso assumere che lo script sia residente sul sito del cliente ma sia sviluppato altrove

  2. #2
    Lo hai testato con FireBugs o hai controllato la console degli errori JS?

    Comunque leva jsUrl da davanti l'url della chiamata Ajax, che potrebbe intenderla con un dominio diverso da quello in uso (cosa non fattibile secondo le specifiche Ajax).

  3. #3

    grazie

    Grazie per avermi risposto ma dicendomi parlandomi di specifica ajax confermi il mio timore. In effetti come ho annotato alla fine potrebbe essere che il client blocchi il rendirizzamento a risorse esterne a quella da dove viene scaricato lo script. Secondo te c'è 1 modo per creare un "rapporto fiduciario" tra il client ed il server informando il client che la funzione ajax che apre la url è residente sullo stesso sito dal quale ha scaricato la risorsa?

    Cordiali saluti

  4. #4
    certo, se l'host è lo stesso, semplicemente non indicarlo e dai il path relativo (o completo) al file che chiami con Ajax. Su host diversi da quello in uso, non puoi fare chiamate via XMLHttpRequest.

  5. #5

    provato

    Ho provato a mettere un indirizzo relativo e ovviamente funziona ma siccome sto sviluppando degli script che siano accessibili da piu siti ho necessità d avere 1 host centrale e quindi 1 indirizzo assoluto che in generale non sarà quello del sito che scarica lo script.
    La cosa curiosa è che da locale tutto funziona correttamente invece quando vado a pubblicare mi da 1 errore tipo "Nome sconosciuto" in corrispondenza della riga con la OPEN

  6. #6
    metti il link del sito pubblicato.

  7. #7

    eccolo

    ecco l'indirizzo la funzione che va in errore è ajaxGetProvinces
    ho provato a metterla direttamente nel corpo della pagina

    http://www.vendoaffittocasa.it/main.php


    Grazie della pazienza

  8. #8
    Non funziona così... non puoi chiamare uno script tramite Ajax che si trova su di un host diverso da quello in visione.

    Se davvero vuoi hostare le funzioni in altri server devi farti un file PHP, sul dominio locale, che chiami l'url remoto con una socket, e ti spari il risultato in semplice output.
    Ma stai attento a verificare i file che chiami, perché potrebbero esserci dei problemi di sicurezza.

  9. #9
    Si avevo immaginato 1 cosa del genere ma usare 1 socket forse è 1 po pesante...ci proverò altrimenti debbo fare in 1 altro modo.

    Grazie sei stato gentilissimo

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.