2013-10-03 15 views
6

Sto provando a chiamare un servizio Web cross domain da un widget HTML. Questo non sembra funzionare. Ha funzionato alla grande sotto lo stesso dominio. Sto cercando di creare una pagina di accesso all'interno di Orchard che possa essere utilizzata per accedere al mio software su un altro dominio. Il servizio Web convalida le credenziali dell'utente e restituisce un valore booleano che genera l'autenticazione dell'utente.Come gestire chiamate di servizi Web interdominio da JS in Orchard CMS

Ho letto che potevo utilizzare un gestore HTTP o un altro servizio Web (sul lato Orchard) per chiamare il servizio Web sull'altro dominio, ma non sono abbastanza familiare con MVC o Orchard per farlo. Come posso aggiungere uno di questi all'applicazione Web di Orchard?

risposta

11

Le chiamate interdominio dal codice lato client sono un no-no in tutti i principali browser. È possibile

  1. Utilizzare CORS, vale a dire. set Access-Control-Allow-Origin intestazione per http://your-caller-domain.com nella risposta servizio Web per consentire le richieste provenienti dal dominio del sito web
  2. Usa JSONP tecnica
  3. Creare un costume delega API all'interno dell'applicazione (utilizzando la lingua ASP.NET MVC controller o un WebAPI uno) che eseguirà il chiamare sul lato server utilizzando la classe WebClient e restituire la risposta all'utente.

Le opzioni sono ordinate dal migliore al peggiore. CORS è supportato dalla maggior parte dei browser, tranne IE8/9 (che hanno supporto parziale tramite XDomainRequest) e precedenti. Ci sono soluzioni alternative per questo però.

Nota che i primi due riguardano le modifiche sul lato del servizio Web: se non puoi farlo, l'opzione 3. è l'unica rimasta.

+1

Nota: CORS ha supporto parziale in IE8/9 tramite 'XDomainRequest'. –

+0

@RayNicholus Sì, quindi ho detto che ci sono soluzioni alternative. Grazie per averlo indicato esplicitamente - ha aggiornato la risposta di conseguenza. –

Problemi correlati