Domanda

Da quello che ho capito, a causa del " stessa politica di origine " applicazione nei browser attuali, è impossibile ottenere dati da un XmlHttpRequest inviati a un dominio diverso rispetto al dominio originale di Javascript.

Ho quasi zero esperienze in merito, quindi sono confuso sul fatto che i servizi web siano inutilizzabili da Javascript. Significa che le applicazioni Web con funzionalità Ajax possono interagire solo con se stesse senza chiamare i servizi forniti da altri domini? Come & Quot; mash-up & Quot; lavoro ? Immagino che i servizi vengano consumati sul lato server, quindi i dati vengono passati al client tramite chiamate Ajax locali. Non lo so.

L'unico modo in cui posso immaginare di ottenere un consumo di servizi lato client sarebbe quello di recuperare un file Javascript direttamente dal dominio del servizio Web di destinazione tramite un tag <script>, quindi utilizzare la sua API per interagire con il dominio remoto.

Qualcuno può illuminarmi?

È stato utile?

Soluzione

Nella tua domanda hai citato < script > trucco. JSONP si basa su questo. È stato formalmente proposto quasi 3 anni fa da Bob Ippolito . Non ti dà il diritto di parlare con l'origine dello script & # 8212; l'origine è definita dalla tua pagina web, non da cos'altro include. Funziona solo perché il server avvolge JSON in una funzione calback, che dovrebbe essere definita nel codice, e verrà eseguita da & Lt; script & Gt; quando caricato. L'esempio più famoso di JSONP sarebbe rappresentato dai servizi Yahoo, incluso Flickr.

Un'altra tecnica consiste nell'utilizzare window.name per trasferire le informazioni. Questa tecnica è stata dettagliata da Kris Zyp quattro mesi fa . Inoltre, il suo articolo confronta il trasporto window.name con JSONP. Non conosco alcun fornitore di servizi di alto profilo che supporti questo nuovo trasporto. Ovviamente cambierà nel tempo.

Ovviamente, dovrei menzionare l'imminente Microsoft XDomainRequest . È stato pianificato di essere spedito con IE8 e nessun altro fornitore si è impegnato a supportarlo, ma è stato presentato per l'inclusione in HTML 5. XDR è una funzionalità utile, ma sospetto che verrà cambiato più volte prima di essere accettato.

Se hai guardato nei link, probabilmente conosci ormai che tutti questi metodi richiedono un certo livello di collaborazione da un server di terze parti. Non è possibile utilizzare servizi casuali a piacimento. Se è necessario utilizzare un servizio non collaborativo, l'unica soluzione è quella di delegarlo tramite il proprio server con tutti i problemi associati: la legalità discutibile, le prestazioni ridotte, l'aumento del carico sul server, il numero ridotto di connessioni tra il browser dell'utente e il tuo server e così via.

Altri suggerimenti

Dai un'occhiata a JSONP, che si basa sulla stessa politica di origine usando praticamente l'approccio che stai descrivendo, assicurati solo di fidarti di dove lo ottieni ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top