Newsgroup: it.comp.java
Titolo: Connessione http da un'applet

Ciao a tutti,
avrei bisogno di realizzare questa cosa qua: da una mia pagina html,
ospitata in un comune spazio web free, dovrei fare una connessione ad
un'altra pagina su un'altro sito per leggerne il contenuto ed effettuare del
parsing. Premesso che dovrà funzionare esclusivamente con Internet Explorer,
è possibile realizzare un'applet java che esegua questo compito? Mi basta
che instauri la connessione e recuperi la pagina; il resto lo faccio in
javascript.
Grazie
Questa è il problema, ora due parole per sfogarmi...
So che questa storia delle connessioni http da una pagina html all'altra non
è vista di buon occhio in ambito di sicurezza. Se non sbaglio infatti,
quello che vi sto chiedendo, con un'applet java non si dovrebbe poter fare,
ma non ne sono certo per cui vi chiedo aiuto.
A conferma del fatto che il "rippaggio" di una pagina esterna non sia una
buona cosa, in Internet Explorer è stato inserito un controllo per cui
risulta impossibile accedere al DOM di un frame nel quale sia caricata una
pagina proveniente da un altro dominio. Se così non fosse stato, avrei
risolto il mio problema semplicemente caricandomi la pagina in un frame
nascosto e leggendone il contenuto in tutta tranquillità, ma.... "Accesso
Negato" !
Ora, però, mi spiegate perchè Microsoft nel suo parser XML ci mette dentro
un componentino che si chiama XMLHTTP e che è tranquillamente in grado
(anzi, è fatto apposta) di connettersi e leggere un'altra pagina? E' vero
che è pensato per recuperare dati in formato XML, ma si comporta con estrema
disinvoltura anche con il semplice HTML. In effetti, quando ho scoperto ciò,
pensavo di aver trovato la soluzione definitiva ma...... questo cacchio di
componente capisce solo l'Unicode in formato UTF-8!!! Quindi, se gli dite di
leggere il sorgente di una normale pagina web nella quale ci sono anche
delle lettere accentate, il risultato nella stringa di ritorno sarà una
serie di tristissimi punti interrogativi al posto delle accentate...
Siccome reputo questa questione, personalmente, molto interessate e
stimolante, ormai ne ho fatto un principio di vita, e non avrò pace finchè
non troverò una soluzione :-). Tra l'altro il fine di tutto ciò è ben lungi
dall'essere dannoso in termini di sicurezza, visto che quello che voglio
realizzare è un'interfaccia per una chat già esistente...!
Ok, finito. Scusate per la lunghezza, lo sproloquio e gli OT vari.
Ivano
iva...@libero.it
ICQ # 12955355
-- 
Posted from 
mail-5.tiscalinet.it
 [195.130.225.151] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

recuperi la pagina; il resto lo faccio in javascript.
non so esattamente come si faccia in Java. Generalmente si stabilisce 
una connessione HTTP con il server, si spedisce la stringa con la 
richiesta HTTP (nel tuo caso "GET /path/documento HTTP/1.1"), si 
aggiungono, uno per riga, eventuali header come ad esempio user-agent e 
pragma (un header assolutamente da aggiungere se vuoi fare le cose bene 
è Host, nella forma "Host: nomedelserver"), si scrive una riga vuota (mi 
pare che HTTP richieda \n\r come terminatore di riga) e si legge ciò che 
arriva: si tratterà di una stringa contenente il valore di ritorno della 
richiesta nella forma "HTTP/<versione> <codice errore> <descrizione 
breve>", dove <versione> è la versione di HTTP supportata dal server, 
<codice errore> è il codice d'errore (200 significa operazione riuscita, 
404 file non trovato, 403 accesso negato, 302 URL rediretto, eccetera), 
e <descrizione breve> è una brevissima descrizione dell'errore ("OK", 
"file not found", "method not allowed", eccetera), seguito dagli header, 
uno per riga, una riga vuota e infine il documento vero e proprio. Gli 
header di ritorno in genere puoi ignorarli, ma spesso devi considerarli: 
ad esempio l'header Location: ti specifica il vero URL del documento, 
nel caso l'URL che avevi specificato fosse un semplice redirect; Cookie: 
lo devi memorizzare e "rimbalzare" al server in successive richieste. 
Questo è solo una minima parte di ciò che puoi fare in HTTP (oltre a GET 
ci sono ad esempio i metodi POST, per inviare grosse quantità di dati ad 
un programma CGI, o PUT per pubblicare file su un server).
-- 
"Your mouse has moved. Windows NT must be restarted for this change to 
take effect."

 realizzare è un'interfaccia per una chat già esistente...!
chat esistente di cui mi sembra di capire tu non sei amministratore,
altrimenti potevi cercare una soluzione piu` semplice! o no?
In questo caso: inserendola in una nuova interfaccia html potresti
"spacciarla per tua" se non addirittura ricavarci guadagno in forma di
publicita` sul tuo sito, ecc. ecc.. Questo non e` dannoso in termini di
sicurezza: questo si chiama *rubare* e dovrebbe essere punito per legge!
...ma con tutti i prodotti free e opensource disponibili in rete, c'e`
davvero ancora bisogno di queste cose??
-- 
Ciao,  |  I play Russian roulette everyday, a man's sport,
Matteo |  With a bullet called life, yeah called life, (SUGAR)

 writes:
M> caricare e restituire la pagina che ti interessa all'applet.
M> Non l'ho mai provato, ma pernso che la cosa sia fattibile e neanche
M> troppo difficile.
Cioè tu dici di accedere ad un URL 
http://www.derubato.org/risorsa
attraverso una get su un URL di un altro server ? Non è che ti occorre
qualcosa che ti faccia "da proxy" e che quindi non è una cosa che si
può avere facilmente su un server free ?
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

un programma CGI, o PUT per pubblicare file su un server).
Già che ci siamo, non ho mai approfondito il metodo PUT. Mi potresti dare
qualche spiegazione in merito?
Grazie mille
Ivano
iva...@libero.it
ICQ # 12955355
-- 
Posted from 
smtp.tiscalinet.it
 [195.130.225.147] (may be forged) 


troppo difficile.
Anche qui: non ho ben chiaro come fare a chiedere al mio host di caricare
una pagina da un'altro sito. Una cosa del genere penso sarebbe fattibile
con ASP o un qualche altro script server-side, ma con un'applet non
riesco a capire come farlo. Potresti essere più preciso perfavore?
Grazie 1000


 
...mi sa` che l'avevo chiaro in mente, ma scrivendolo cosi`
"d'impulso" devo aver saltato (parecchi!!) dei passaggi logici! :-P
hai ragione, quello che volevo dire era di mettere un qualcosa (servlet)
che facesse da proxy e che potesse essere facilmente utilizzata
dall'applet.


 
scusami xche` nella mia risposta mi sono perso qualche "passaggio" (magari
piu` d'uno): ...cmq, riassumendo, si: la cosa e` fattibile con uno
strumento server-side (CGI, servlet, ...) che faccia da "proxy" e possa
essere utilizzato dall'applet per accedere alla risorsa cui direttamente
non puo` accedere. Questo puo` essere fatto interamente in java (se il
server supporta le servlet) ed e` piuttosto semplice. L'applet in questo
modo finisce per chiedere la risorsa allo stesso host da cui e` stata
caricata (in quanto chiederebbe di caricare la servlet/proxy), quindi
senza problemi di sicurezza. La servlet in quanto server-side non soffre
delle restrizioni delle applet. Se dove leggi servlet ci sostituisci
"script perl", o piu` semplicemente "programma CGI" sviluppato nel
linguaggio che piu` ti piace, ovviamente la cosa funziona lo stesso...
Mantenedo l'applet sul lato client puoi fornire un'interfaccia
ricca e interattiva (con i noti limiti di compatibilita` o pesantezza
durante il caricamento... ma per questo basta essere accorti durante
lo sviluppo).
Se la soluzione server-side e` per te praticabile, puoi pensare anche
di sviluppare tutto lato server (in java utilizzeresti servlet, o jsp)
L'accoppiata servlet/applet cmq penso sia piu` piu` semplice realizzazione
...prometto che la prossima volta rileggero` i post prima di inviarli! ;-)
nel frattempo provo a lavorare meno! :-P
