Newsgroup: it.comp.lang.javascript
Titolo: invocazione remota cgi (attenzione: messaggio denotante ignoranza)

Salve a tutti.
Nonostante io programmi da almeno 30 anni (azz!), sono rimasto molto
indietro per tutto quello che riguarda internet. Ora, io vorrei
ottenere un certo "comportamento" da parte di un sito web. Mi
piacerebbe sapere se la cosa e' fattibile con Javascript (e allora me
lo studio) o, visto che fra di voi c'e' sicuramente piu' di un "guru"
la cui conoscenza trascende javascript, mi piacerebbe almeno capire
verso quale strumento mi devo muovere...
Ho provato a cercare in giro ma mi accorgo che mi manca proprio il
"gergo".
Questo e' lo scenario:
Posseggo e gestisco due siti web, diciamo 
www.AAA.it
 e 
www.BBB.it
Il primo (AAA) e' un sito diciamo "commerciale" (aruba...) con linux
hosting, mysql, php, etc. sul quale pero' non posso far girare i miei
CGI che sono computazionalmente molto intensivi.
Il secondo (BBB) e' un sito mio fatto con Apache e linux sul quale
posso fare la qualunque (sono root).
Al momento sul sito AAA ho una pagina html (scritta a manina, tanto
per farvi capire il mio livello...) con un
form e qualche campo. Quando lo user preme il bottone del form io
invoco un programma CGI su 
www.BBB.it
(tra l'altro un CGI scritto in C, perche' sono proprio vecchio...) che
mi spara fuori in stdout un output html
che viene visualizzato all'utente. Tutto questo funziona, e' una cosa
molto elementare ma funziona.
La cosa che non mi piace, e che vorrei cambiare e' la seguente.
L'utente si trova su una pagina di AAA, tipo 
www.AAA.it/form.html
,
clicca il pulsante di cui sopra
e gli viene visualizzata una pagina di risultati che COME INDIRIZZO in
ALTO
riporta 
http://www.BBB.it/cgi-bin/pippuzzo.cgi
la cosa che non mi piace e' quel 
www.BBB.it
 che io vorrei in qualche
modo mascherare, cioe' vorrei
che visto che sono partito dal sito AAA anche l'output fosse
visualizzato in AAA, tipo in una
pagina 
www.AAA.it/output.html
 generata dinamicamente partendo
dall'output del CGI fatto girare su
www.BBB.it
Secondo voi e' fattibile una cosa simile usando javascript o qualche
altro sistema?
(non vi chiedo una soluzione, ma un punto di partenza, in italiano o
inglese fa lo stesso!)
Io, nella mia ignoranza cubitale, speravo di poter invocare in qualche
modo il CGI da javascript, salvare
l'output in una variabile e poi visualizzarlo localmente. Ma qualcuno
mi ha detto che non si possono
fare cose simili perche' per motivi di sicurezza l'output del CGI puo'
essere visualizzato solo
in una pagina con lo stesso indirizzo del programma effettivo.
A me sembra un po' strano che una ditta non possa avere una macchina
che fa da front-end e una che
fa i calcoli (i CGI) quindi vi chiedo con il capo cosparso di cenere
quale tipo di strumento (javascript o altro)
potrei usare: non vorrei dovermi mettere io a scrivere da zero un
protocollo client-server per fare questa cosa.
Grazie mille e scusate la prolissita' e sicuramente l'OT almeno
parziale (ma non so dove sbattere la
proverbiale testa).
giovanni.

 fare questa cosa.
se ho ben capito:
 - da 
aaa.it
 chiami la pagina server-side (sempre su 
aaa.it
) pippo.php
 - la pippo.php invoca la pagina sull'altro server (SOP, come dicevo, 
vale solo client-side), riceve l'output e lo invia al client
In questo modo per il client avviene tutto nel dominio 
aaa.it
, e solo 
server-side invocherai la pagina del dominio 
bbb.it
.
Ho capito bene?

Ciao, premetto che non sono un programmatore ma ho un minimo di
esperienza nel settore e spero di esserti di aiuto.
Scrivi una pagina php tipo AAA.php/form.php che vada a recuperarsi i
dati da  
http://www.BBB.it/cgi-bin/pippuzzo.cgi
 e che li presenti poi
al client ed il gioco è fatto.
Ci sono librerie php già pronte per recuperare dati attraverso il
protocollo http da una sorgente remota (
www.php.net/curl
)
L'ideale (applicazione web moderna) sarebbe che:
- l'output di  
http://www.BBB.it/cgi-bin/pippuzzo.cgi
 fosse una
rappresentazione del dato in XML o JSON
- AAA.php/form.php va a catturare il dato remoto e, eventualmente, lo
elabora/modifica/filtra/pagina...
- il client scritto in javascript  (la pagina web che l'utente apre)
utilizza tecniche ajax per recuperare il dato da AAA.php/form.php
Nota che la SOP non viene violata in quanto il codice javascript legge
dati da AAA.php/form.php che si trova sullo stesso dominio dal quale
il codice javascript viene servito.
Tutte cose che so in teoria...infatti sto cercando un programmatore
per un lavoro e sono finito su questo gruppo!
Ciao
Ale

 dall'output del CGI fatto girare su 
www.BBB.it
 [...]
E' possibile, servono Adobe Flash, JavaScript ed un file di permessi 
nella root del dominio. Cerca su google: cross domain ajax flash
Saluti
-- 
Enos /* looking4work */

 nella root del dominio. Cerca su google: cross domain ajax flash
Questo approccio può risultare utili in diversi ambiti (tra l'altro,
i browser recenti implementano già richieste cross domain, senza che
si debba scomodare Flash), ma non in questo caso specifico.
Vista la premessa iniziale, direi che quest'opzione è da scartare. È
molto più semplice, e con zero dipendenze, farlo server side.
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 debba scomodare Flash), ma non in questo caso specifico.
Ciao ZER0,
ti riferisci al cross domain scripting con JSON (che in questo caso 
effettivamente andrebbe anche bene, dal momento che si è responsabili di 
entrambi i domini), o a qualcos'altro, che gestisce anche i permessi?
Le implementazioni dei vari browser sono compatibili tra loro e con 
eventuali bozze del w3c? Link please! :-)
Saluti
-- 
Enos

 eventuali bozze del w3c? Link please! :-)
Vedi su. :)


 [...]
Quindi basta un header per permettere AJAX cross domain, era ora.
Leggo che è supportata in modo nativo solo dalle ultimissime versioni dei 
browser, quindi è meglio che mi dimentichi che esiste, per un annetto :-)
Ciao
-- 
Enos

 browser,
Te l'avevo scritto nel primo post; è supportata solo dai browser
recenti. L'aspetto positivo è, se non altro, che ogni browser lo
supporta già - sebbene IE faccia di testa sua.
