Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    XMLhttpRequest Cross-domain

    Ciao a tutti, come da titolo, vorrei sapere se esiste un modo per effettuare una richiesta XMLhttpRequest anche al di fuori del proprio dominio.
    O comunque un modo per poter leggere il contenuto di un file tramite javascript.

    So che potrei fare la stessa cosa con php, però la rchiesta deve essere fatta dal client e non dal server, per via di restrizioni sull'ip.

    So che il plugin per Firefox "Grease Monkey" ha una funzione "GM_XMLhttpRequest()" e permette di effettuare richieste cross-domain. Io ci ho provato ad addattare il codice javascript, ma dava errori strani, probabilmente utilizza qualche funzione di firefox.. mah..

    Spero ci siano soluzioni, anche macchinose, mi va bene

    Grazie in anticipo!

  2. #2
    Usa questo snippet:

    codice:
    var file_letto="";
    
    function leggi_remoto(quale_file){
    var request=false;
    try {request = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){
    try {request = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){
    request=false;};};
    if (!request && typeof XMLHttpRequest!='undefined'){request = new XMLHttpRequest();};
    request.open("GET",quale_file,true);
    request.onreadystatechange=function(){
    if(request.readyState==4){
    if(request.status==200){
    file_letto=request.responseText;
    //altre operazioni....
    };
    };};request.send(null);
    };

    Poi chiamarlo invocando la funzione leggi_remoto("url_completa_del_file_da_leggere.xyz ");
    Nota che tale funzione non ritorna nessun valore.
    Il file letto viene messo automaticamente nella variabile file_letto asincronamente, dopo che la chiamata alla funzione leggi_remoto è già ritornata.
    Potrebbe volerci qualche secondo.

    Eventualmente, sostituisci il commento (//altre operazioni....) con altro codice da eseguire quando il file è stato letto.

    Dovrebbe funzionare su tutti ibrowser e leggere qualsiasi file che abbia permessi di lettura e non sia protetto in qualche modo, da qualsiasi dominio, di qualsiasi mime type.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La strada proxy l'hai provata? (se la risposta è no fai una ricerca qui sul forum se ne già parlato)
    D'altronde è per motivi di sicurezza che vengono precluse queste possibilità, pertanto o è il browser (con dei plugin) che ti permette di fare questo oppure è impossibile, ed escluderei il javascript concepito/sviluppato per il web.


    Edit: @softhare sicuro di quanto affermi? Potresti mettere una demo online da testare
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Grazie per il codice, lo proverò!

    Per quanto riguarda i proxy no, non so neanche esattamente a cosa ti riferisci, io conosco solo i proxy per l'ip nel browser, ma non credo che centra qualcosa.

    Leggendo per google, ho trovato un sito dove parlava di usare php per prelevare il contenuto del file, per poi passarlo a javascript, ma è sempre una richiesta lato server.

  5. #5
    @softhare sicuro di quanto affermi? Potresti mettere una demo online da testare
    Si, ragionevolmente!

    Chiaramente non funziona su file locali, il file deve essere raggiungibile su un server http.

    Uso questo sistema ad esempio in www.softhare.it (attivo) oppure in www.softhare.it/appalti (in fase di sviluppo).

    Lo ho usato in vari altri frangenti con ottimi risultati.

    Quale sarebbe esattamente il problema secondo te?
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da softhare
    Quale sarebbe esattamente il problema secondo te?
    Il problema è che da quello che so i browser non permettono chiamate direte XMLhttpRequest Cross-domain al di fuori del proprio dominio, ho testato (velocemente) i due siti ma non mi sembra che facciano nulla di simile pertanto se puoi mettere una pagina online esempio minimale che fa quanto sostieni mi piacerebbe studiarla, ciao e grazie.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Forse non ho centrato il problema: cosa intendi esattamente per "chiamate direte XMLhttpRequest Cross-domain" ?
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  8. #8
    ho provato velocemente il codice..
    funziona su IE, ma non su firefox..

    vedo che la funzione è basata sugli ActiveX e sono presenti solo su IE..

    codice:
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    var file_letto="";
    
    function leggi_remoto(quale_file){
    var request=false;
    try {request = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){
    try {request = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){
    request=false;};};
    if (!request && typeof XMLHttpRequest!='undefined'){request = new XMLHttpRequest();};
    request.open("GET",quale_file,true);
    request.onreadystatechange=function(){
    if(request.readyState==4){
    if(request.status==200){
    file_letto=request.responseText;
    alert(file_letto);
    };
    };};request.send(null);
    };
    </script>
    </head>
    <body>
    <?php
    echo '
    <form action="index.php" method="GET">
    <input name="url" type="text">
    
    <input type="submit">
    </form>
    ';
    if(isset($_GET['url'])){
    $url = $_GET['url'];
    echo '
    <script language="javascript" type="text/javascript">
    leggi_remoto("'.$url.'");
    </script>
    ';
    }
    ?>
    </body>
    </html>

  9. #9
    in questi casi, per quanto ne so, la soluzione ideale è scriverti un proxy in php usando quindi le curl. Se però tu sai già di avere restrizioni sugli ip la vedo dura

  10. #10
    Beh di solito per questi tipi di richieste uso curl o fsockopen
    però essendo una richiesta lato server i dati contenuti del file sono modificati in base all'ip della macchina che fa la richiesta, e se è un ip di un server, modifica i dati rendendoli inutilizzabili.. (non so come possa capire che sia un server)..

    Non ho ancora tenuto conto degli iframe.. riesco a leggerne il contenuto tramite javascript?
    e soprattutto gli iframe sono una richiesta lato server o client?

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.